如何使用单损失函数并行训练非共享自动编码器网络



一起训练两个非共享神经网络。

我有两个不同的自动编码器网络,一个用于相机图像,它获取输入图像并尝试使用转置卷积方法重现相同的图像。第二个网络获取草图图像并做同样的事情。两个网络具有相同的结构,但学习不同的过滤器。

autoencoder_p = Model(input_img, decoder_p(encoder_p(input_img)))
autoencoder_s = Model(input_img, decoder_s(encoder_s(input_img)))
autoencoder_p.compile(optimizer='adam', loss='mse', metrics=['accuracy'])
autoencoder_p.fit(X_train_real, X_train_real, epochs=10, batch_size=1, validation_split=0.1)
autoencoder_s.compile(optimizer='adam', loss='mse', metrics=['accuracy'])
autoencoder_s.fit(X_train_sim, X_train_sim, epochs=10, batch_size=1, validation_split=0.1)

问题是我必须一个接一个地编译和训练两个网络。有没有可能的方法可以一起编译和训练两个网络。因为两个网络是相同的,并且使用相同的损失和训练策略。

创建一个包含两者的模型。

警告:您的代码似乎对两者使用相同的输入图像,这不是您所描述的。有两个输入input_img_pinput_img_s

twin_model = Model([input_img_p, input_img,_s],
[
decoder_p(encoder_p(input_img_p)),
decoder_s(encoder_p(input_img_s)),                             
])
twin_model.compile(optimizer='adam', loss='mse', metrics=['accuracy'])
twin_model.fit([X_train_real, X_train_sim], [X_train_real, X_train_sim], ...)

最新更新