我正在tf 1.9上使用tf.estimator API
我有多个输出损失,并且想在张量板上的TRAINING和EVAL步骤中记录每个单独的损失。
在model_fn内,我定义了几个tf.summary.scalar,例如:
loss1 = tf.reduce_mean(tf.keras.losses.binary_crossentropy(
labels[label1], predictions[label1]))
tf.summary.scalar('loss1', loss1)
loss2 = tf.reduce_mean(tf.keras.losses.binary_crossentropy(
labels[label2], predictions[label2]))
tf.summary.scalar('loss2', loss2)
combined_loss = tf.reduce_mean([loss1, loss2])
这些仅在TRAINING运行中显示在张量板上。对于EVAL运行,我只看到记录的eval_metric_ops和combined_loss,但看不到个人损失。
我尝试在model_fn内添加显式的Evaluation_hooks以按照建议的here进行tf.summary.merge_all()操作
summary_hook = tf.train.SummarySaverHook(save_steps=100,
output_dir=params['model_dir'],
summary_op=tf.summary.merge_all())
return tf.estimator.EstimatorSpec(mode=mode, predictions=predictions,
loss=combined_loss,
train_op=train_op,
eval_metric_ops=eval_metric_ops,
evaluation_hooks=[summary_hook]
)
结果相同,即在EVAL期间未保存tf.summary.scalar。 如何获得EVAL运行以写出tf.summary?