在我的代码中,我有两个自定义损失函数。一个是负对数似然(NLL),另一个是KL散度(KLD)
其中每一个都单独计算,并使用model.add_loss(NLL)
和model.add_loss(KLD)
添加到tf.keras.Model
中
在第一个x
时期,我只希望NLL被合并,但在那之后,我希望KLD逐渐增加其影响(退火)。我希望的结构是:
weight_KL {epoch 00 -> 09} == 0.0
weight_KL {epoch 10 -> 19} += 0.1
weight_KL {epoch 20 -> ..} == 1.0
我的看法是,有两个损失函数加在一起,权重随时间变化:
total_loss = NLL + weight_KL * KLD
在TensorFlow 2中有没有实现这一点的方法
您可以在
model.fit()
中使用callbacks
参数。根据需要在内置函数on_epoch_begin
或on_epoch_end
中添加损失调整定义回调函数,如下所示:
您的
model.fit()
应该如下所示-在
callbacks
中还有几个选项,如on_batch_begin
、on_batch_end
等,您可以找到它们here希望这能回答你的问题
相关问题 更多 >
编程相关推荐