2

私の入力時系列データは形状です(nb_samples、75,32)。
75はタイムステップであり、32は入力ディメンションです。Keras LSTM多次元入力

model = Sequential() 
model.add(LSTM(4, input_shape=(75, 32))) 
model.summary() 

LSTM重みベクトル、[W_i, W_c, W_f, W_o]は全32個の次元であるが、出力が1つだけの値です。上記モデルの出力形状は(1,4)である。しかし、LSTMでの出力もベクトルですので、上記のように1対多の実装では(32,4)ではありませんか?マルチディメンション入力にも単一の値を与えるのはなぜですか?

+0

このベクターは32次元を持っていますが、どういう意味ですか?それは真実ではない。 –

答えて

1

シェイプ(nb_sample, timestep, input_dim)の入力についてKeras doc for reccurent layers

で読むことができると、次の2つの可能な出力があります:あなたはLSTMにreturn_sequence=Trueを設定した場合、(あなたのケースではありません)

  • をすべての隠れた状態を返すので、LSTMがあなたのシーケンスを '読む'ときの中間段階です。形状(nb_sample, timestep, output_dim)の出力が得られます。

  • return_sequence=False(デフォルト)を設定すると、最後の状態のみが出力されます。したがって、形状(nb_sample, output_dim)の出力が得られます。

は、だから、このようなあなたのLSTM層を定義した場合:

model.add(LSTM(4, return_sequence=True, input_shape=(75, 32))) 

がシェイプ(None, 75, 4)の出力を持つことになります。 32が時間ディメンションの場合は、データをLSTMに送る前にデータを転置する必要があります。最初の次元は時間的な次元です。

私はこれが助けてくれることを願っています:)