如何解决TensorFlow Keras:在 model.fit 期间打印并保存损失和梯度
我正在使用像这样的基本代码在 TensorFlow Keras 中训练神经网络
model.fit(x_train,y_train,epochs=5)
有没有办法为model.fit的每个时期打印并保存损失函数值、梯度和梯度范数?
谢谢。
解决方法
为了在训练期间的每个 epoch 之后打印和保存变量,您可以使用 Callbacks。您可以编写自己的回调或使用内置回调。 例如内置回调,CSVLogger 可帮助您将每个时期的结果存储在 CSV 文件中。
您也可以使用 ModelCheckpoint 以在检查点的每个 epoch 之后保存权重。
如果你想在每个 epoch 之后打印渐变,你有两种可能。
要么编写自定义训练并使用 tf.GradientTape()
记录自动微分的操作,然后使用 tape.gradient()
函数为您计算梯度。有关详细信息,请参阅此 link。
或者,如果您想使用 model.fit()
,您应该再次编写自定义回调,然后在模型中打印变量,如下所示:print(model.trainable_variables)
。
以下是自定义回调的示例:
class myCallback(tf.keras.callbacks.Callback):
def on_epoch_end(self,epoch,logs={}):
print(model.trainable_variables)
my_callback = myCallback()
model.fit(x_train,y_train,epochs=5,callbacks=[my_callback])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。