【发布时间】:2021-01-25 06:06:41
【问题描述】:
我构建了自己的 Keras 模型类,继承自 keras.Model。但是,我有一个修改过的训练步骤,我手动推导出前向传递并计算两个不同的损失,我将它们相加,这样我的总损失就是 total_loss = loss1 + factor*loss2。我观察到,如果我在训练期间减少该因素,我会得到更好的结果。我现在的问题是,这可能是一个好的解决方案。我可以以某种方式访问 train_step 方法中的纪元数,以便我可以从纪元数计算因子,还是有其他更好的方法?
非常感谢:)
编辑: 如果我在 train_step 方法中添加一个计数器,它不会在训练期间增加。但这仅发生在非急切模式下。如果我启用渴望模式,它就可以工作。关于如何使它在非急切模式下工作的任何想法?
【问题讨论】:
-
这里有同样的问题:我需要发展一个类似 ProGAN 的网络,并且我正在使用 keras train_step。目前我找不到访问纪元号的正确方法。
-
我最终通过回调(可以访问纪元号)解决了这个问题。回调可以更改模型中的变量。确保变量是 tf.Variable 并且设置为 trainable=False
-
谢谢,我正在寻找这个解决方案,我正在研究回调。
标签: python tensorflow keras