请注意,这是对抗性训练,因此我正在逐批训练,并且在每批之后打印出所有损失(total_loss,l1,l2)。我还尝试过分别计算l1和l2,它们与上面的三元组一致。
我的模型具有以下形式
sklearn.feature_extraction.image.extract_patches_2d
培训如下:
gan=Model(inputs=input,outputs=[out1,out2])
gan.compile(loss=[l1,l2],loss_weights=[1,-1],optimizer='Adam')
当打印出损失时,我期望类似 [3,4,1],因为3 = 4-1。相反,我在培训开始时得到以下信息:
loss=gan.train_on_batch(batch_x,[batch_y,batch_z])
print(f'epoch {ep}, batch {batch_index}, gan_loss:',loss)
如您所见,数字不正确(例如15.37 ..不等于13.87 ..- 0.9118 ...)。但是,经过几个时期之后,由于我得到了
epoch 0, batch 0, gan loss: [15.379185, 13.870087, 0.91181725]
epoch 0, batch 100, gan loss: [2.0804837, 1.3862944, 0.20364553]
epoch 0, batch 200, gan loss: [1.4540046, 1.3862944, 0.38290504]
epoch 0, batch 300, gan loss: [1.264518, 1.3862944, 0.3952997]
epoch 0, batch 400, gan loss: [0.9158491, 1.3862944, 0.6523255]
epoch 0, batch 500, gan loss: [1.3806188, 1.3862944, 0.13243067]
这是预期的输出。这对我来说很神秘,因为似乎代码本身正在收敛,这显然是胡说八道。