我对如何实现tfa的SWA optimizer感到困惑。这里有两点:
有一个独特的ModelCheckpoint,允许您保存移动平均权重(而不是当前权重)是有意义的。然而,似乎SWA应该管理平均体重。这使我想设置update_weights=False
这是正确的吗?本教程使用update_weights=True
# original training
model.fit(...)
# updating weights from final run
optimizer.assign_average_vars(model.variables)
# batch-norm-hack: lr=0 as suggested https://stackoverflow.com/a/64376062/607528
model.compile(
optimizer=tf.keras.optimizers.Adam(learning_rate=0),
loss=loss,
metrics=metrics)
model.fit(
data,
validation_data=None,
epochs=1,
callbacks=final_callbacks)
在保存我的模型之前
这是正确的吗
谢谢
有两种方法可以做到这一点,第一种方法是在保存之前手动更新权重,如文档中的example
第二个选项是,如果设置了^{,则通过
AverageModelCheckpoint
更新权重。如collab笔记本example所示请注意
AverageModelCheckpoint
在保存模型之前也会从source code调用assign_average_vars
:处理批次定额的最简单方法如下: 首先,循环模型中的所有层,并重置批次标准层中的移动平均值和移动方差(在我的示例中,我假设批次标准层以“bn”结尾):
之后,运行模型一个历元并将training设置为true以更新移动平均值和方差:
相关问题 更多 >
编程相关推荐