Neural network TFL学习输入形状错误

Neural network TFL学习输入形状错误,neural-network,tflearn,Neural Network,Tflearn,错误 无法为张量'TargetsData/Y:0'馈送形状(128,1)的值, 它的形状是“(?,)” 代码 我有4门课,词汇由17355个单词组成 tf.reset_default_graph() net = tflearn.input_data(shape=(None,trainX.shape[1]),name='input') net = tflearn.fully_connected(net, 200, activation='ReLU') net = tflearn.fully_con

错误

无法为张量'TargetsData/Y:0'馈送形状(128,1)的值, 它的形状是“(?,)”

代码

我有4门课,词汇由17355个单词组成

tf.reset_default_graph()
net = tflearn.input_data(shape=(None,trainX.shape[1]),name='input')
net = tflearn.fully_connected(net, 200, activation='ReLU')
net = tflearn.fully_connected(net, 25, activation='ReLU')
net = tflearn.fully_connected(net, 4, activation='softmax')
net = tflearn.regression(net, optimizer='sgd', 
                         learning_rate=0.1, 
                         to_one_hot = True,n_classes =4,
                         loss='categorical_crossentropy')

model = tflearn.DNN(net)
model.fit(trainX, trainY, validation_set=0.1, show_metric=True, batch_size=128, n_epoch=100)

trainX.shape=1238417355,trainY.shape=12384,1,testX.shape=137617355,testY.shape=1376,1

是什么原因导致此错误?

对于具有形状的张量'TargetsData/Y:0',错误“无法输入形状的值…”主要是由于trainY的形状与估计器(回归)层的占位符形状不同

为什么?

在您的例子中,主要的问题是trany的形状是(?,1),这是一个二维张量,而占位符的形状是(?),这是一个一维张量。所以我们得到了这个错误

如何解决它?

将序列重塑为一维张量。因为您在回归层中将
设置为_one_hot=True
,所以占位符形状是包含类索引的一维张量。有关详细信息,您可以查看关于回归的:

   with tf.name_scope(pscope):
        p_shape = [None] if to_one_hot else input_shape
        placeholder = tf.placeholder(shape=p_shape, dtype=dtype, name="Y") 
因此,在输入模型之前,我们需要将序列从(12384,1)重塑为(12384,)