我遇到了train_on_batch更新后使我的keras模型重置为上一个时期的权重的问题,这使一些权重变得微不足道。
我尝试在每个训练步骤之后保存模型权重,然后在一次nan训练更新后将“良好”(非nan)权重加载回keras模型中。 这似乎很好用-当我在将旧的权重文件加载到模型中后打印model.get_weights()的结果时,所得的权重不包含nan(并且预测使用它们还会提供非nan输出)。
但是,现在当我尝试再次使用train_on_batch时,这次使用新的批处理,我立即再次获得了nan更新。我尝试了多个随机选择的批次,每次都进行nan更新。
在发生nan train_on_batch更新时,模型或优化器配置中是否存在某些变化(可能是参数),并且一旦我改变权重就需要重新设置以继续训练?
我还想避免在解决方案中使用model.save()和load_model()。
(keras 2.2.4,tensorflow 1.12.0)
任何想法都值得赞赏!
答案 0 :(得分:0)
由于您尚未粘贴代码和权重,因此我不能告诉您太多,但是我怀疑此问题可能是由于辍学或正则化造成的,如果您使用两种技术中的任何一种,请正确设置辍学的参数或百分比根据您的网络,小型网络中的较高百分比将导致与正则化相同的此类问题。 对于还原和保存模型,请使用检查点。