1

调用以下方法时:

losses = [tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels)
          for logits, labels in zip(logits_series,labels_series)]

我收到以下 ValueError:

ValueError: Only call `sparse_softmax_cross_entropy_with_logits` with named arguments (labels=..., logits=..., ...)

反对这一点:

[tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels)

根据nn_ops.py的文档,我需要确保将登录名和标签初始化为以下内容:

def _ensure_xent_args(name, sentinel, labels, logits): # 确保所有参数都作为命名参数传递。如果 sentinel 不是 None: raise ValueError("Only call %swith " "named arguments (labels=..., logits=..., ...)" % name) 如果标签是 None 或 logits 是 None: raise ValueError( “必须提供标签和日志。”)

Logits=X,标签=Y

这里的原因是什么?我是否将它们初始化为诸如损失之类的值?或者?

4

1 回答 1

1

原因是第一个参数tf.nn.sparse_softmax_cross_entropy_with_logits_sentinel

_sentinel: 用于防止位置参数。内部,请勿使用。

此 API 鼓励您为参数命名,如下所示:

tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=labels)

...这样您就不会意外传递logitslabels或反之亦然。

于 2017-12-20T16:37:28.083 回答