【发布时间】:2021-10-01 15:01:50
【问题描述】:
我在训练两个模型时遇到了一些困难,第一个模型的输出是第二个模型的输入(第二个模型单独训练)。
我附上了训练过程和模型的示意图。 训练模拟器模型的第一部分是可以的。为了训练生成器,我已经正确连接了两个模型,但结果与预期相差甚远。我的问题是:我应该定义一个自定义训练循环吗?以及如何定义正确的训练循环?
下面是两个连接模型的整体架构
input1 = keras.Input(shape=(100,), name='noise')
input2 = keras.Input(shape=(14,), name='contrast_vector')
[image_output, period_output] = generator([input1, input2])
Spectrum_output = simulator([image_output, period_output])
Final_model = keras.Model(inputs=[input1, input2], outputs=[image_output,
period_output, Spectrum_output], name='Final_Model')
def ssim_loss(y_true, y_pred):
return tf.reduce_mean(tf.image.ssim(y_true, y_pred, 1.0))
loss1 = ssim_loss
losses = [loss1, 'mse', 'mse']
Final_model.compile(
loss= losses,
loss_weights=[0.05, 0.01, 1.0],
optimizer = keras.optimizers.Adam(learning_rate=1e-3, beta_1=0.5))
history = Final_model.fit([noise_train, CT_vector_train], [y_train, period_train,
full_spec_train], batch_size=256, epochs=1000, validation_split=0.2)
模型架构:
张量流中的最终模型图:
【问题讨论】:
标签: python tensorflow machine-learning keras deep-learning