“logits和label必须大小相同:logits_size = [10,2] labels_size = [10,11]”

时间:2017-11-11 17:39:34

标签: machine-learning tensorflow

我正在建立一个机器学习模型,该模型使用肿瘤数据对其他肿瘤进行分类。但是,当我申报成本时,似乎存在问题。

我不明白为什么这是一个问题,因为我使用TensorFlow提供的MNIST数据集运行这个相同的精确代码,并且它工作正常。在这种情况下,我将n_classes设置为10,batch_size设置为100,x = tf.placeholder('float', [None, 784])

1 个答案:

答案 0 :(得分:2)

您已将类数指定为2:

n_classes = 2

因此,当您使用指定的10批时,您的输出图层将为[10, 2]形状。但是,您每个样本都会传递11个标签,标签形状为[10, 11]。您可能会将数据作为sess.run([...], feed_dict={...})标签传入。您没有指定标签的形状:

y = tf.placeholder('float')

该行应该是:

y = tf.placeholder('float', shape=[None, n_classes])

如果您这样做,我希望您的错误会转移到sess.run来电,并指出您为标签传递了错误的数据。


另外,作为旁注,对于二进制预测器,如果在输出上使用单个神经元,则会得到稍好的结果。虽然它可以使用2个神经元作为二进制类,但它通常比单个[0,1]输出类略差。