如何在keras模型中拟合3D矩阵?

时间:2016-12-26 19:20:59

标签: python-3.x neural-network keras

我正在使用keras创建回归模型。我有十位数的10 145 * 5个矩阵。我正面临着在keras模型中拟合10 145 * 5矩阵的问题。

X是输入矩阵

In: X.shape

Out: (10, 145, 5)

y是目标矩阵

In: y.shape

Out: (10,)

对于每个145 * 5矩阵,目标矩阵中将有一个值

制作模型

In: model = Sequential([ Dense(32, input_dim=145), Activation('sigmoid'), Dense(output_dim=10) ])

虽然上一行没有抛出任何错误或警告,但我确信在这种情况下正确的方式来适应模型。

In: model.compile(optimizer='sgd',loss='mse')

到目前为止没问题。但是当我试图拟合矩阵时

In: model.fit(X, y.reshape(-1, 1))

在这一行之后,我得到一个很长的追溯,最终说

ValueError: Error when checking model input: expected dense_input_1 to have 2 dimensions, but got array with shape (10, 145, 5)

请帮我正确拟合模型中的矩阵。谢谢!

1 个答案:

答案 0 :(得分:4)

使用input_shape代替input_dim。此外,由于输出维度的数量正在发生变化,因此您需要使用FlattenReshape作为其中一个维度。

from keras.layers import Flatten

model = Sequential([
    Dense(32, input_shape=(145,5)),
    Flatten(),
    Activation('sigmoid'),
    Dense(output_dim=10)
])

model.summary()

使用model.summary()检查模型的结构,以便更好地理解。