Mys*_*rce 17 python machine-learning neural-network deep-learning keras
当我尝试在keras中训练MLP模型时,我收到以下错误(我正在使用keras版本1.2.2)
检查模型输入时出错:传递给模型的Numpy数组列表不是模型预期的大小.预计会看到1个数组,但得到以下12859个数组列表:
这是模型的摘要
____________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
====================================================================================================
dense_1 (Dense) (None, 20) 4020 dense_input_1[0][0]
____________________________________________________________________________________________________
dense_2 (Dense) (None, 2) 42 dense_1[0][0]
====================================================================================================
Total params: 4,062
Trainable params: 4,062
Non-trainable params: 0
____________________________________________________________________________________________________
None
Run Code Online (Sandbox Code Playgroud)
这是模型的第一行
model.add(Dense(20, input_shape=(200,), init='lecun_uniform', activation='tanh'))
Run Code Online (Sandbox Code Playgroud)
为了训练:
model.fit(X,Y,nb_epoch=100,verbose=1)
Run Code Online (Sandbox Code Playgroud)
其中X是元素列表,每个元素依次是200个值的列表.
编辑:
我也试过了
model.add(Dense(20, input_shape=(12859,200), init='lecun_uniform', activation='tanh'))
Run Code Online (Sandbox Code Playgroud)
但我得到了同样的错误
Mar*_*jko 24
您的错误来自于您X因某种原因未被转换为a 的事实numpy.array.在这里你X被视为一个行列表,这是你的错误消息背后的原因(它期望一个输入而不是列表,其中有多个行元素).转型:
X = numpy.array(X)
Y = numpy.array(Y)
Run Code Online (Sandbox Code Playgroud)
我会检查数据加载过程,因为那里可能出错.
更新:
正如评论中提到的那样 - input_shape需要改为input_dim.
更新2:
为了保持input_shape一个人应该改变它input_shape=(200,).
我通过添加修复了我的
数组
到 train_X 、 train_Y 、 valid_X 和 valid_Y。例如,
model.fit(np.array(train_X),np.array(train_Y),
batch_size=32,nb_epoch=20,
validation_data=(np.array(valid_X),np.array(valid_Y)),
callbacks=[early_stop])
Run Code Online (Sandbox Code Playgroud)
我从这里得到了帮助。这种方法可能会运行缓慢,因为所有数据特征都必须转换为 numpy 数组,这可能会给您的系统带来大量工作。