【问题标题】:Automatically save Tensorboard-like plot of loss to image file自动将类似 Tensorboard 的损失图保存到图像文件中
【发布时间】:2021-03-24 19:56:42
【问题描述】:

我目前正在尝试使用 TensorFlow 预制 Estimator (tf.estimator.DNNRegressor) 预测粒子的运动。

我想将平均损失图的图像保存到每个模型的文件夹中。

Tensorboard 非常适合在训练期间监控这一点,但我想保存一张图像以供将来参考(例如,在视觉上比较不同的方法)

有没有简单的方法来做到这一点? 我可以在不同时间保存评估结果并使用 matplotlib,但我还没有找到任何关于如何从 regressor.train 方法中获取损失的信息。

【问题讨论】:

  • 不是实际的解决方案,而是替代方案。 1) 您可以下载 JSON/CSV 格式的数据(选中左上角的“显示数据下载链接”)并使用 Excel/Pandas/等进行绘制。 2) 有人写了exportTensorFlowLog 来解决这个问题(自己没有测试过) 3) 浏览器开发工具可以让你截取特定元素的截图(例如ChromeFirefox
  • exportTensorFlowLog 对我来说效果很好 - 我会推荐它

标签: tensorflow tensorflow-estimator


【解决方案1】:

是的,目前,您可以下载.svg的loss/other_metric历史记录,正如评论中指出的@Jdehesa

  1. 查看Show data download links

  2. 可以在图的底部看到一个下载符号;

  3. 如果找不到,请查看图中的黄色标记。

【讨论】:

    【解决方案2】:

    如果您想以编程方式进行,您可以将 CSVLogger 和自定义回调结合起来进行绘图:

    class CustomCallbackPlot(Callback):
    
    def __init__(self, training_data_dir):
        self.tdr = training_data_dir
    
    def on_epoch_end(self, epoch, logs=None):
        df_loan = pd.read_csv(os.path.join(self.tdr, 'training_metrics.csv'))
        df_loan[['loss', 'val_loss']].plot()
        plt.xlabel('epochs')
        plt.title('train/val loss')
        plt.savefig(os.path.join(self.tdr, 'training_metrics.png'))
    

    使用 CSVLogger 回调首先生成训练和验证损失数据。之后使用这个 CustomCallbackPlot 来绘制它。

        csv_logger = CSVLogger(os.path.join(self.training_data_dir, 'training_metrics.csv'))
        callbacks = [csv_logger, CustomCallbackPlot(self.training_data_dir)]
    

    在我的示例中,我使用training_data_dir 来存储路径。

    【讨论】:

      猜你喜欢
      • 2011-06-15
      • 2012-07-26
      • 1970-01-01
      • 2013-05-31
      • 2011-05-08
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      相关资源
      最近更新 更多