Keras错误:预计会看到1个数组

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,).


roc*_*yne 5

我通过添加修复了我的

数组

到 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 数组,这可能会给您的系统带来大量工作。