我已经使用sequence_loss定义了自己的损失函数
loss = tf.contrib.legacy_seq2seq.sequence_loss(logits, labels, weights)
我希望将其添加到eval_metric_ops中,以便在我的ML引擎程序包中可以连续在tensorboard中显示评估损失(默认只是准确性)。我尝试将其作为自定义eval_metric_ops添加
eval_metric_ops = {
'loss': loss # this has already been coputed for Modes.EVAL
}
但是,我收到错误消息“ TypeError:eval_metric_ops的值必须为(metric_value,update_op)元组,给定:Tensor(“ sequence_loss / truediv:0”,shape =(),dtype = float32)for key:loss“ –什么我需要做些什么来将损失作为eval_metric_op传递吗?我猜我当前的损失应该是指标值,但是我不确定update_op应该是什么?
最佳答案
您的情况下的度量功能可以使用损耗的移动平均值使用tf.metrics
来实现:
def metric_fn(labels, predict):
loss = tf.contrib.legacy_seq2seq.sequence_loss(logits, labels, weights)
mean, op = tf.metrics.mean(loss)
return mean, op
关于python - 向eval_metric_ops添加自定义损失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45720464/