我已经使用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/

10-12 22:57