2016-12-26 77 views
2

我正在用keras创建一个回归模型。我有10145 * 5十位数的矩阵。我面临的问题是适合keras模型中的10145 * 5矩阵。如何在keras模型中拟合3D矩阵?

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)

请帮我正确地安装矩阵模型。谢谢!

回答

3

使用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()检查模型的结构以便更好地理解。

+0

我是否需要在拟合模型时将矩阵变平? –

+0

我在检查模型目标时发现这个'ValueError:Error:预期的dense_2具有形状(无,10),但在拟合时获得了具有形状(10,1)的数组''。 –

+0

没有平铺图层会自动为你做。您可以按原样使用输入。 – indraforyou