2016-12-26 4 views
2

私はkerasを使って回帰モデルを作成しています。私は10145 * 5の10桁の行列を持っています。私はkerasモデルの10145 * 5行列を適合させる問題に直面しています。ケラスモデルに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_dimの代わりにinput_shapeを使用してください。また、出力の次元数が変化しているので、次元の1つとしてFlattenまたはReshapeを使用する必要があります。

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がshape(None、10)を持つと予想されましたが、フィッティング中にshape(10、1) –

+0

フラットレイヤーは自動的にあなたのためにそれを行いません。入力はそのまま使用できます。 – indraforyou

関連する問題