python - 记录 TensorBoard 2.1 正则化损失的推荐方法是什么
问题描述
我希望能够使用 TensorBoard 监控模型正则化损失的演变(我使用的是 TensorFlow 2.1)。
到目前为止,我已经设置了一个tf.keras.callbacks.TensorBoard
回调传递给tf.keras.Model.fit
. 它允许我监控总损失和学习率:
回调默认记录它们。
然而,总损失由多个项组成(例如正则化损失)。如何轻松监控它们?
tf.keras.callbacks.TensorBoard
似乎不支持这一点。正确的?- 我找到了这个文档部分:记录自定义标量。但是,该示例显示了如何在每个时期结束时监视标量,而我正在寻找在每个批次结束时收集标量并在每个时期结束时记录平均值的东西。
- 我想我可以编写一个自定义回调,但我可以避免花时间在这上面吗?
- 还有其他解决方案吗?
因此我的问题是,为 TensorBoard 2.1 记录正则化损失的推荐方法是什么?
解决方案
TensorBoard
您可以通过从回调继承并手动添加所需数量来创建自己的回调。
这是我为此目的使用的代码。在这种情况下,您将获得每个层的正则化损失的单独图表。
class CustomTBCallback(keras.callbacks.TensorBoard):
def _log_metrics(self, logs, prefix, step):
for layer in self.model.layers:
if layer.losses:
logs["reg_%s" % layer.name] = tf.reduce_sum(layer.losses)
super()._log_metrics(logs, prefix, step)
不幸的是,这有点棘手,因为它依赖于_log_metrics
可能在不同版本的 tensorflow 之间发生变化的私有函数。我已经将它与 tf 2.0 一起使用。
推荐阅读
- javascript - 将数组拆分为给定范围之间的随机长度块
- php - 无法使用 codeigniter 将图像路径存储到数据库中 - 学生注册
- c# - 通过调用另一个表单中存在的变量来切换表单上的 LED
- ios - 如何仅在首次启动 iOS 应用程序(Swift)时呈现不同的视图控制器 - 以编程方式
- java - 利用 AlarmManager 触发 Notification
- java - 在每月 1 日和 16 日增加半月付款频率的给定日期
- containers - 无法在 Azure Web App 上为来自 DockerHub 的容器部署 Windows 容器
- r - 使用logical()、double()等作为默认参数值有什么用
- ms-access - MS Access 中的静态随机数
- javascript - 第一次实现 - 图表对象似乎不完整