Tensorflow ValueError:仅使用命名参数调用`sparse_softmax_cross_entropy_with_logits`

问题描述 投票:1回答: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:如果标签为None或logits为None,则引发ValueError(“仅调用带有”“命名参数(labels = ...,logits = ...,...)”%name的%s):raise ValueError (“必须提供标签和logits。”)

Logits = X,labels = Y.

这是什么原因?我是否将它们初始化为某些价值,例如损失?要么?

python tensorflow neural-network lstm cross-entropy
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)

...这样你就不会意外地将logits传递给labels,反之亦然。

© www.soinside.com 2019 - 2024. All rights reserved.