TensorBoard:绘制每个步骤的“评估损失”图表
Posted
技术标签:
【中文标题】TensorBoard:绘制每个步骤的“评估损失”图表【英文标题】:TensorBoard: Charting 'eval loss' for each steps 【发布时间】:2018-12-01 14:06:55 【问题描述】:我正在使用 TensorFlow Estimator 训练 CNN。在 TensorBoard 上进行可视化时,我看到每个步骤都在跟踪训练损失值。但是,评估损失只显示一次(即只有一个数据点)。我想看看每一步的损失值图表。
这是我的代码的 sn-p:
model = tf.estimator.Estimator(model_fn, model_dir='./model')
input_fn = tf.estimator.inputs.numpy_input_fn(
x='images': dev['train_images'], y = dev['train_labels'],
batch_size=batch_size, num_epochs=10, shuffle=True)
t = model.train(input_fn, steps=num_steps)
input_fn = tf.estimator.inputs.numpy_input_fn(
x='images': dev['test_images'], y = dev['test_labels'],
batch_size=batch_size, shuffle=False)
e = model.evaluate(input_fn, steps=num_steps)
完整的代码可以在here找到。
我应该怎么做才能看到所有步骤的评估损失?
【问题讨论】:
我认为只有在有新的检查点时才会进行评估。所以即使你跑了 20 步,因为它使用相同的检查点,你只会在这 20 个批次上得到一个组合的 eval 损失,并且由于训练损失与检查点无关,它在每一步之后进行评估并单独报告。我不是 100% 确定,但从这个角度来看可能值得一看。 是的,评估损失仅针对最后一个检查点计算。但我的理解是,由于在创建用于评估的输入函数时,我们可以指定批量大小,因此评估将分步进行。例如,我的测试数据有 2000 个样本,我的批量大小是 100。所以我认为评估将执行 20 次而不是一次。我需要进一步了解估算器如何执行训练和评估功能。您是否知道任何解释这一点的文档? 如前所述,您的评估将执行 20 次,但只会记录组合损失(很可能是平均值)。我不知道有一种方法可以记录所有损失,而不仅仅是平均损失。但是由于我们正在评估给定数据的特定检查点,因此将整个数据的综合损失作为衡量标准对我来说更有意义。至于文档,TensorFlow 和 Google 的文档是我发现的唯一值得探索的文档。 【参考方案1】:您需要使用估算器的train_and_evaluate 方法。您可以定期评估您的模型(每隔几秒钟,您需要将值放入 throttle_secs 选项)。下面是示例代码
train_spec = tf.estimator.TrainSpec(input_fn=lambda: my_input_fn_train(X_train, y_train), hooks=[logging_hook_1], max_steps=MAX_TRAIN_STEPS)
eval_spec = tf.estimator.EvalSpec(input_fn=lambda: my_input_fn_test(X_dev, y_dev), hooks=[logging_hook_1], throttle_secs=EVALUATION_THROTTLE_SECONDS, steps=EVALUATION_STEPS)
tf.estimator.train_and_evaluate(myestimator, train_spec, eval_spec)
【讨论】:
【参考方案2】:我遇到了同样的问题,我的解决方案是修改 run_config 并将其传递给估算器。有效。
run_config = tf.estimator.RunConfig(save_checkpoints_steps = 1000)
【讨论】:
【参考方案3】:您可以使用tf.estimator.EvalSpec
,您需要定义从何时开始运行评估start_delay_secs
和最小延迟:throttle_secs
。
只有在新的检查点可用时才会进行评估。所以你需要创建
检查点定期使用config = tf.estimator.RunConfig(save_checkpoints_steps = 100))
【讨论】:
以上是关于TensorBoard:绘制每个步骤的“评估损失”图表的主要内容,如果未能解决你的问题,请参考以下文章