我在Keras中编写了以下模型,但在进行预测时,我遇到了ValueError(在代码之后)。我查看了StackOverflow上的其他问题,但只发现
this one
但我无法理解答案是什么。
我试图建立一个网络,以X为输入,有一个隐藏的200个神经元,最后是一个sigmodial神经元来预测输出类。目标是二元分类。
模型的输入是(n x 400)作为x和(n,1)作为Y。x和Y都是numpy数组。代码和错误消息如下。此外,神经网络的结果是:损耗=无穷大,精度=0.0,这意味着我这边的某些东西明显错误。
def create_baseline():
# create model
model = Sequential()
model.add(Dense(200, input_dim=400, kernel_initializer='normal', activation='relu'))
model.add(Dense(1, kernel_initializer='normal', activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
我对模型进行如下训练:
estimator = KerasClassifier(build_fn=create_baseline, nb_epoch=5, batch_size=5, verbose=1)
estimator.fit(X, Y)
estimator.predict(X[0])
我收到以下错误:
ValueError: Error when checking : expected dense_34_input to have shape (None, 400) but got array with shape (400, 1)
编辑1:训练数据X有400个特征(从文档的word2vec学习)。Y是一个只有0和1的标签。我将训练文件读入pandas数据帧,然后使用
dataframe.values
将X和Y作为numpy数组。
编辑2:根据下面的答案,我从我的模型中预测
estimator.predict(train_X_vals[0].reshape(1,len(train_X_vals[0])))
array([[ nan]], dtype=float32)
编辑3:我从训练集中预测1000 X的值,得到所有这些值。
编辑5:我的模型似乎无法处理超过2500个训练样本。我试着增加训练规模,在3000多人的训练中,一切都变好了。