TensorBoard:绘制每个步骤的“评估损失”

时间:2018-06-22 06:44:06

标签: tensorflow tensorboard loss-function tensorflow-estimator

我正在使用TensorFlow Estimator训练CNN。在TensorBoard上将其可视化后,我看到正在跟踪每个步骤的训练损失值。但是,评估损失仅显示一次(即,仅一个数据点)。我希望看到每一步的损耗值图。

这是我的代码的片段:

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

如何查看所有步骤的评估损失?

3 个答案:

答案 0 :(得分:1)

您需要使用估算器的train_and_evaluate方法。您可以定期评估模型(每隔几秒钟,您需要将值放入节流阀_秒选项)。下面是示例代码

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)

答案 1 :(得分:0)

我遇到了同样的问题,我的解决方案是修改run_config并将其传递给估计器。有效。 run_config = tf.estimator.RunConfig(save_checkpoints_steps = 1000)

答案 2 :(得分:0)

您可以使用tf.estimator.EvalSpec,其中您需要定义从什么时候开始运行评估start_delay_secs和最小延迟:throttle_secs

仅当新检查点可用时才进行评估。所以你需要创建 定期使用config = tf.estimator.RunConfig(save_checkpoints_steps = 100))

检查点