将自定义损失添加到 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
我已经使用 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