Tensorflow中的InvalidArgumentError

时间:2016-11-13 13:50:41

标签: python tensorflow

我正在尝试使用Tensorflow工具创建神经网络。

sizeOfRow = len(data[0])
x = tensorFlow.placeholder("float", shape=[None, sizeOfRow])
y = tensorFlow.placeholder("float")

def neuralNetworkTrain(x):
  prediction = neuralNetworkModel(x)
  # using softmax function, normalize values to range(0,1)
  cost = tensorFlow.reduce_mean(tensorFlow.nn.softmax_cross_entropy_with_logits(prediction, y))

这是网络的一部分 我有错误:

InvalidArgumentError (see above for traceback): logits and labels must be same size: logits_size=[500,2] labels_size=[1,500]
 [[Node: SoftmaxCrossEntropyWithLogits = SoftmaxCrossEntropyWithLogits[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"](Reshape, Reshape_1)]]
有人知道出了什么问题吗?

编辑: 我也从这段代码中得到了:

for temp in range(int(len(data) / batchSize)):
    ex, ey = takeNextBatch(i) # takes 500 examples
    i += 1
    # TO-DO : fix bug here
    temp, cos = sess.run([optimizer, cost], feed_dict= {x:ex, y:ey}) 

这个错误    TypeError:不可用类型:' list'

1 个答案:

答案 0 :(得分:0)

嗯,这个错误非常自我描述。

logits and labels must be same size: logits_size=[500,2] labels_size=[1,500]

因此,首先,您的标签应转换为大小500, 1,其次,softmax_cross_entropy_with_logits期望labels以概率分布的形式呈现(例如{{1} }})。

如果您知道您的课程是独占的(可能就是这种情况),您应该切换到使用sparse_softmax_cross_entropy_with_logits