如何在 keras 中重置优化器状态?
查看 Optimizer 类我看不到这样的方法:
https://github.com/keras-team/keras/blob/613aeff37a721450d94906df1a3f3cc51e2299d4/keras/optimizers.py#L60
还有实际上是什么self.updates
和 self.weights
?
最佳答案
没有一种“简单”的方法来重置“状态”,但您总是可以简单地使用新的优化器重新编译您的模型(模型的权重被保留):
newOptimizer = Adadelta()
model.compile(optimizer=newOptimizer)
您也可以使用方法
set_weights(weightsListInNumpy)
(不推荐),在基类 Optimizer
中,但这会相当麻烦,因为您需要知道所有初始值和形状,有时可能不是简单的零。现在,属性(property)
self.weights
没有做太多事情,但是保存和加载优化器的函数会保存和加载这个属性。这是张量列表,不应直接更改。最多使用 K.set_value(...)
在列表的每个条目中。您可以看到 weights
在 _serialize_model
method 中保存优化器.self.updates
是一些更复杂的东西来理解。它存储将随模型在训练中处理的每个批次更新的变量。但它是一个 象征性 图变量。self.updates
,正如您在代码中看到的,总是附加一个 K.update(var, value)
或 K.update_add(var, value)
.这是告诉图形应该在每次迭代中更新这些值的正确方法。通常,更新的变量是
iterations
, params
(模型的权重),moments
, accumulators
, 等等。
关于python - Keras:如何重置优化器状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56806419/