python - TensorFlow Keras:在 model.fit 期间打印并保存损失和梯度
问题描述
我正在使用如下基本代码在 TensorFlow Keras 中训练神经网络:
model.fit(x_train, y_train, epochs=5)
有没有办法打印出并保存每个时期的损失函数值、梯度和梯度范数model.fit
?
谢谢。
解决方案
为了在训练期间的每个 epoch 之后打印和保存变量,您可以使用Callbacks。您可以编写自己的回调或使用内置回调。例如内置回调,CSVLogger帮助您将每个 epoch 结果存储在 CSV 文件中。
您也可以使用ModelCheckpoint来在每个时期后在检查点中保存权重。
如果您想在每个 epoch 之后打印渐变,您有两种可能性。
编写自定义训练并用于tf.GradientTape()
记录自动微分的操作,然后tape.gradient()
为您计算梯度。有关更多信息,请参阅此链接。
或者,如果您想使用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])
推荐阅读
- python - 将整个 csv 文件顺序读取到给定大小的较小 Numpy 数组中
- r - 在 X 值上方/下方更改线条颜色
- node.js - Express-session 在 NGINX 反向代理上不是持久的
- java - 使用 lambda 绑定布尔属性时出现问题 [Java - JavaFX]
- c++ - rapidjson 输出中的订单属性
- reactjs - 使用启用了新 typescript 的 reactjs 版本时超出了最大调用堆栈大小
- sql - 如何将 ListView 中的多个项目保存到 SQL Server 数据库中?
- jquery - 使用 Django 和 jQuery 的过滤器
- reactjs - React Hook useCallback 有一个不必要的依赖:'price'。排除它或删除依赖数组 react-hooks/exhaustive-deps
- facebook - Page Public Content Access\',您对此端点的使用必须经过 Facebook 的审核和批准