调用以下方法时:
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:如果标签为None或logits为None,则引发ValueError(“仅调用带有”“命名参数(labels = ...,logits = ...,...)”%name的
%s
):raise ValueError (“必须提供标签和logits。”)Logits = X,labels = Y.
这是什么原因?我是否将它们初始化为某些价值,例如损失?要么?
原因是tf.nn.sparse_softmax_cross_entropy_with_logits
的第一个参数是_sentinel
:
_sentinel
:用于防止位置参数。内部,不要使用。
此API鼓励您为参数命名,如下所示:
tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=labels)
...这样你就不会意外地将logits
传递给labels
,反之亦然。