将自定义损失添加到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:eval_metric_ops的值必须是(metric_value,update_op(元组,给定:Tensor("sequence_loss/truediv:0",shape=((,dtype=float32(键:损失" - 我需要做什么才能将损失作为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

最新更新