最近,我使用custom_estimator.py建立了模型。为了清除损失值在训练集和验证集中的变化。我需要知道如何同时显示训练和验证集的损失曲线。我尝试使用estimator的train_and_evaluate api,得到了以下图片。
如图所示,评估结果是一个点,但是我想要一条像训练集损失曲线的线。如下图所示。
当我使用估算器时,我这样称呼训练和验证:
train_input_fn=tf.estimator.inputs.numpy_input_fn(
x={"x":img_t},
y=lbl_t,
batch_size=100,
num_epochs=None,
shuffle=True)
cla.train(
imput_fn=train_input_fn,
steps=17000,
hooks=[logging_hook])
#Obtain the hole batch of validation images
img_v,lbl_v=sess.run([img_val,lbl_val])
#Enter the inputs to the model for validation
val_input_fn=tf.estimator.inputs.numpy_input_fn(
x={"x":img_v},
y=lbl_v,
num_epochs=1,
shuffle=False)
val_results=cla.evaluate(input_fn=val_input_fn)
我这样注册:
#Calculate the accuracy........................
accuracy=tf.metrics.accuracy(labels=labels,predictions=predictions["classes"])
metrics={"accuracy":accuracy}
tf.summary.scalar("accuracy",accuracy[1])
#.............................................
#Training.....................................
if mode==tf.estimator.ModeKeys.TRAIN:
optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.001)
train_op=optimizer.minimize(loss=loss,global_step=tf.train.get_global_step())
return tf.estimator.EstimatorSpec(mode=mode,loss=loss,train_op=train_op)
#.............................................
#Validation....................................
if mode==tf.estimator.ModeKeys.EVAL:
return tf.estimator.EstimatorSpec(mode=mode,loss=loss,eval_metric_ops=metrics)
当我进行培训时,我不知道如何记录验证损失,并像图像上的曲线一样显示它,我将不胜感激