Tensorflow在定义nce_loss时给出错误

时间:2019-02-10 22:51:52

标签: python tensorflow gradient

我想获得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。怎么了?

1 个答案:

答案 0 :(得分:1)

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

所以我想这是因为您的ids类型为list。 也许您应该将其转换为numpy.ndarray,然后重试。