我在用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中找到。
我应该怎么做才能看到所有步骤的评估损失?
发布于 2018-06-29 00:12:32
你需要使用估计器的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)发布于 2018-09-20 02:35:42
我遇到了同样的问题,我的解决方案是修改run_config并将其传递给估计器。啊,真灵。run_config = tf.estimator.RunConfig(save_checkpoints_steps = 1000)
发布于 2019-04-18 22:01:55
您可以在需要定义何时开始运行评估start_delay_secs和最小延迟:throttle_secs的地方使用tf.estimator.EvalSpec。
仅当有新检查点可用时,才会进行评估。因此,您需要使用config = tf.estimator.RunConfig(save_checkpoints_steps = 100))定期创建检查点
https://stackoverflow.com/questions/50982119
复制相似问题