2017-11-21 143 views
1

私はこの形のシーケンス入力を持っています:(6000, 64, 100, 50)4次元入力でLSTMにどのようにフィードするのですか?

6000はサンプルシーケンスの数に過ぎません。各配列は、長さが64です。

私はこの入力をKerasを使用してLSTMに収める予定です。

input = Input(shape=(64, 100, 50)) 

これは私がそうのように私のLSTMにinputを置くしかし(?, 64, 100, 50)

、の入力形状を与える:

x = LSTM(256, return_sequences=True)(input) 

I私の入力は、このよう

Iセットアップこのエラーが発生する:

Input 0 is incompatible with layer lstm_37: expected ndim=3, found ndim=4

私の入力形状が(?, 64, 100)のようなものだったのですが、4次元のときはうまくいかなかったでしょう。

これは、LSTMが3次元の入力しか取ることができないということですか? Kerasを使用してLSTMに4次元以上の入力を与えるにはどうすればよいですか?

答えて

2

答えはできません。

入力形状形状(batch_size, timesteps, input_dim)

3Dテンソル:

Kerasドキュメントは再発レイヤに関する以下の情報を提供します。

あなたの場合、各ステップの形状は(100,50)64タイムステップです。モデルを機能させる最も簡単な方法は、データを(100 * 50)に変更することです。これは非常に合理的であるかをWheter

X = numpy.zeros((6000, 64, 100, 50), dtype=numpy.uint8) 
X = numpy.reshape(X, (6000, 64, 100*50)) 

があなたのデータに依存:

numpyのは、そうするための簡単な機能を提供します。

+0

入力を3次元で100 * 50に変更する場合は、入力データを並べ替えることをお勧めします。 3次元と4次元のデータは、(6000,64,100 * 50)の形状を形成するために3つの次元に「マージ」されなければならないと私は考えています。 – Carven

+0

また、これはあなたのデータに大きく依存します。たぶんあなたの実際のデータを説明し、さまざまな次元について詳しく説明します。 – mapeza

+0

'input_data.reshape((6000,64,100 * 50)'。しかし、これは合理的であるかどうかはあなたのデータに大きく依存するかどうかということです。 –

関連する問題