多次损失历史

时间:2020-03-17 22:38:37

标签: python tensorflow keras generative-adversarial-network

我正在GAN架构中使用自定义损失函数。编译并运行模型后,我希望获得总损失的不同组成部分。但是我只能得到的总损失只是不同组成部分的总和。以下是添加不同损失的脚本。

model = Model(inputs=[img_lr, img_hr], outputs=[grad_loss, gen_loss]) 

model.add_loss(grad_loss)
model.add_loss(gen_loss)
model.compile(optimizer=Adam(0.001))

model.metrics_names.append('grad_loss')
model.metrics_tensor.append(grad_loss)
model.metrics_names.append('gen_loss')
model.metrics_tensor.append(gen_loss)

generator_loss = model.train_on_batch([imgs_lr, imgs_hr], None)

如果我在Tenorflow 1.12.0上运行以上代码,则会得到generator_loss作为具有两个分量的向量。如果我尝试使用更高版本的Tensorflow 1.13.1,则必须进行一些改动以增加损失,如下所示:

model = Model(inputs=[img_lr, img_hr], outputs=[grad_loss, gen_loss]) 

model.add_loss(grad_loss)
model.add_loss(gen_loss)
model.compile(optimizer=Adam(0.001))

model.metrics_names.append('grad_loss')
model.**metrics**.append(grad_loss)
model.metrics_names.append('gen_loss')
model.**metrics**.append(gen_loss)

generator_loss = model.train_on_batch([imgs_lr, imgs_hr], None)

使用Tensorflow 1.13.1中的上述代码,generator_loss只是两个损失函数之和的标量。

如何获得损失函数的两个单独的成分?难道我做错了什么?谢谢。

0 个答案:

没有答案