将自定义损失添加到 eval_metric_ops

add custom loss to eval_metric_ops

我已经使用 sequence_loss

定义了自己的损失函数
loss = tf.contrib.legacy_seq2seq.sequence_loss(logits, labels, weights)

我希望将其添加到 eval_metric_ops 以便在我的 ML 引擎包中我可以连续显示张量板中的评估损失(默认值只是准确性)。我尝试将其添加为自定义 eval_metric_ops

eval_metric_ops = {
    'loss': loss # this has already been coputed for Modes.EVAL
}

但是,我收到错误 "TypeError: Values of eval_metric_ops must be (metric_value, update_op) tuples, given: 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