我想获得nce_loss的渐变。我的代码如下:
//AI
int aiTurn(int AI) {
//Variables
int pot = 0;
int count = 0;
char choice = ' ';
cout << "AI turn" << endl;
//While loop until AI turn reaches 20 or score >=50
while (count < 20 && AI < 50) {
int rollValue = diceRoll();
//Incrementing turn
count++;
//Checking for bust
if (rollValue == 1) {
cout << "Die Roll " << rollValue << " : BUST" << endl << endl;
pot = 0;
return AI;
}
//Else increment
else {
pot += rollValue;
cout << "Die Roll : " << rollValue << " Pot : " << pot << endl;
AI += rollValue;
}
}
return AI;
}
但是在定义损失时,我得到了错误:
文件“ /path/fgsm.py”,第163行,在 main(config)文件“ /path/fgsm.py”,第95行,在main中 num_classes = 220),文件“ /path/venv/local/lib/python2.7/site-packages/tensorflow/python/ops/nn_impl.py”, 第1248行,在nce_loss name = name)文件“ /path/venv/local/lib/python2.7/site-packages/tensorflow/python/ops/nn_impl.py”, 第1031行,在_compute_sampled_logits中 如果labels.dtype!= dtypes.int64:AttributeError:“列表”对象没有属性“ dtype”
我不明白这里的错误。损失公式的输入应准确。 num_classes是根据api的int,并且是如示例中给出的int。怎么了?
答案 0 :(得分:1)
从给定的错误消息中,您可以看到它正在谈论有关labels
的问题。
所以我想这是因为您的ids
类型为list
。
也许您应该将其转换为numpy.ndarray
,然后重试。