Python TensorFlow/TFLearn:ValueError:无法为Tensor u'输入形状(64,)的值;目标/Y:0';,其形状为';(?,10)和#x27;
我一直在尝试使用和我自己的数据集执行回归 使用tflearn,我一直在尝试使用MNIST数据集实现一个卷积网络。我没有使用MNIST数据集,而是尝试用自己的数据集替换培训和测试数据。我的数据是从csv文件中读取的,与MNIST数据的形状不同。我有255个特征,它们代表一个15*15的网格和一个目标值。在示例中,我将第24-30行替换为(并将import numpy包括为np): 我得到以下错误: ValueError:无法为张量u'目标/Y:0'输入形状(64,)的值, 它的形状是“(?,10)” 我尝试了各种组合,并在stackoverflow中看到了一个成功的例子,但没有成功。本页中的示例不适用于我,并引发类似错误,我不理解提供的答案或类似问题提供的答案 如何使用自己的数据?简短回答 在的第41行中,您还必须将Python TensorFlow/TFLearn:ValueError:无法为Tensor u'输入形状(64,)的值;目标/Y:0';,其形状为';(?,10)和#x27;,python,tensorflow,deep-learning,Python,Tensorflow,Deep Learning,我一直在尝试使用和我自己的数据集执行回归 使用tflearn,我一直在尝试使用MNIST数据集实现一个卷积网络。我没有使用MNIST数据集,而是尝试用自己的数据集替换培训和测试数据。我的数据是从csv文件中读取的,与MNIST数据的形状不同。我有255个特征,它们代表一个15*15的网格和一个目标值。在示例中,我将第24-30行替换为(并将import numpy包括为np): 我得到以下错误: ValueError:无法为张量u'目标/Y:0'输入形状(64,)的值, 它的形状是“(?,10)
network=fully_connected(网络,10,activation='softmax')
中的输出大小10更改为1,以network=fully_connected(网络,1,activation='linear')
。请注意,您可以删除最终的softmax
查看您的代码,您似乎有一个目标值Y
,这意味着将L2损失与均方
一起使用(您将找到所有可用的损失):
此外,重塑Y和Y_测试以获得形状(批次大小,1)
详细回答:如何分析错误并找出错误 以下是如何分析错误:
- 错误是
,这意味着它来自于feed\u dict参数Y无法输入值。。。对于张量'target/Y'
- 同样,根据错误,您尝试输入shape(64,)的Y值
,而网络希望输入shape
。(?,10)
- 它需要一个形状(批量大小,10),因为它最初是MNIST的网络(10个类)
- 我们现在要更改网络的预期值Y。
- 在代码中,我们看到最后一层
返回大小为10的输出完全连接(网络,10,activation='softmax')
- 我们将其更改为不带softmax的大小为1的输出:
完全连接(网络,1,激活='linear')
- 在代码中,我们看到最后一层
最后,这不是一个bug,而是一个错误的模型架构太好了,非常感谢您给出了如此详细的答案。希望它能起作用,希望下次您能理解两年后TensorFlow的错误消息(我必须承认相当复杂),并且@OlivierMoindrot您不知道我有多感激!
#read in train and test csv's where there are 255 features (15*15) and a target
csvTrain = np.genfromtxt('train.csv', delimiter=",")
X = np.array(csvTrain[:, :225]) #225, 15
Y = csvTrain[:,225]
csvTest = np.genfromtxt('test.csv', delimiter=",")
testX = np.array(csvTest[:, :225])
testY = csvTest[:,225]
#reshape features for each instance in to 15*15, targets are just a single number
X = X.reshape([-1,15,15,1])
testX = testX.reshape([-1,15,15,1])
## Building convolutional network
network = input_data(shape=[None, 15, 15, 1], name='input')
regression(network, optimizer='adam', learning_rate=0.01,
loss='mean_square', name='target')