微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TensorFlow Keras:在 model.fit 期间打印并保存损失和梯度

如何解决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 举报,一经查实,本站将立刻删除。