这个问题在这里已有答案:
不知何故,我在Keras库中发现了一个非常奇怪的错误 .
我的学习方法包括三层神经网络:输入层130,517单位(输入大小),隐藏层10,000,输出层2单位 .
在代码期间,我运行了批量学习(我使用了 partial_fit
函数),但代码反复抛出相同的错误:
检查输入时出错:期望的dense_1_input具有形状(130517,)但是得到了具有形状的数组(1,)
我再次检查了输入尺寸,发现它确实如我所想,有130,517个尺寸 .
下面是调试时变量的图片,如您所见, np.array(X[0])
的形状为130,517:
无论如何,我附加了神经网络的初始化代码,以及对 partial_fit
的调用代码:
def initClassifier(self):
self.classifier.add(Dense(100000, input_dim=130517, activation='relu'))
self.classifier.add(Dense(2, activation='softmax'))
self.classifier.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
def partial_fit(self, X, y, classes):
self.classifier.train_on_batch(np.array(X[0]), np.array(y))
有没有人有办法解决吗?
这可能是Keras代码中的错误吗?
1 回答
在培训方面,Keras希望您的数据包含批量大小的维度 . 在您的情况下,这意味着数据应该是
(batch_size, 130517)
的形状 . 但是,您传递np array
形状(130517)
,这会导致您的错误 . 您可以重新整形数据以包含批量形状,如下所示:X_reshaped = X[0].reshape(1, -1)