Tensorflow 在定义 nce_loss 时出错

Tensorflow gives error when defining nce_loss

我想获取 nce_loss 的渐变。我的代码如下:

loss = tf.reduce_mean(
    tf.nn.nce_loss(weights=weights,
                   biases=biases,
                   labels=ids,
                   inputs=datapoint,
                   num_sampled=10,
                   num_classes=220))

grads = tf.gradients(loss, datapoint)

但是在定义损失时,出现错误:

File "/path/fgsm.py", line 163, in main(config) File "/path/fgsm.py", line 95, in main num_classes=220), File "/path/venv/local/lib/python2.7/site-packages/tensorflow/python/ops/nn_impl.py", line 1248, in nce_loss name=name) File "/path/venv/local/lib/python2.7/site-packages/tensorflow/python/ops/nn_impl.py", line 1031, in _compute_sampled_logits if labels.dtype != dtypes.int64: AttributeError: 'list' object has no attribute 'dtype'

我不明白这里的错误是什么。损失公式的输入应该是准确的。 num_classes 根据 api 是一个整数,它是示例给出的一个整数。这里有什么问题?

从给定的错误消息中,您可以看到它在谈论有关 labels 的内容。

所以我猜这是因为你的 idslist 类型。 也许您应该将其转换为 numpy.ndarray 然后再试一次。