シングルユニットLSTMと3ユニットLSTMニューラルネットワークの違い


12

次のKerasコードのLSTM

input_t = Input((4, 1))
output_t = LSTM(1)(input_t)
model = Model(inputs=input_t, outputs=output_t)
print(model.summary())

として表すことができます

model.predict(np.array([[[1],[2],[3],[4]]]))(唯一の)LSTMユニットを呼び出すと、最初にベクトル[1]が処理され、次に[2]と前の入力からのフィードバックが処理されて、ベクトル[4]まで続きます。つまり、です。x1=[1]バツ2=[2]バツ=[]バツ4=[4]

次のニューラルネットワークが同じ入力シーケンスを処理する方法がわかりません [1],[2],[3],[4]

 input_t = Input((4, 1))
 output_t = LSTM(3)(input_t)
 model = Model(inputs=input_t, outputs=output_t)
 print(model.summary())

このNNには、3つのLSTMユニットがあります。彼らはどのようにシーケンスを処理します[1],[2],[3],[4]か?それらは相互に関連していますか?それらは入力シーケンスを並行して処理しますか、または1つのユニットが入力シーケンスを処理し、後でその入力が2番目のLSTMユニットに供給されますか?この図を概略的に使用して誰かがプロセス全体を説明できますか?

回答:


7

KerasにLSTM(n)単一LSTMユニットの内部構造を、以下の画像は、何層及びユニット(またはニューロン)を示しています。「LSTM単位からなるLSTM層を作成していることを意味し、右端の画像を示します。

ここに画像の説明を入力してください

次の図は、LSTMレイヤー全体の動作を示しています。

ここに画像の説明を入力してください

バツ1バツNtバツtht1bhththtバツN

今のコンピューティングのためのパラメータの数を聞かせてLSTM(1)LSTM(3)、私たちが呼ぶとき何Kerasショーとそれを比較しますmodel.summary()

pバツtoあなたthtp+oあなたt+1oあなたtoあなたt×p+oあなたt+1

4oあなたtp+oあなたt+1

Kerasが出力するものと比較してみましょう。

例1。

 t1 = Input(shape=(1, 1))
 t2 = LSTM(1)(t1)
 model = Model(inputs=t1, outputs=t2)
 print(model.summary())

  Layer (type)                 Output Shape              Param #   
  =================================================================
  input_2 (InputLayer)         (None, 1, 1)              0         
  _________________________________________________________________
  lstm_2 (LSTM)                (None, 1)                 12        
  =================================================================
  Total params: 12
  Trainable params: 12
  Non-trainable params: 0
  _________________________________________________________________

4×1×1+1+1=12

例2。

  input_t = Input((4, 2))
  output_t = LSTM(3)(input_t)
  model = Model(inputs=input_t, outputs=output_t)
  print(model.summary())

    _________________________________________________________________
    Layer (type)                 Output Shape              Param #   
    =================================================================
    input_6 (InputLayer)         (None, 4, 2)              0         
    _________________________________________________________________
    lstm_6 (LSTM)                (None, 3)                 72        
    =================================================================
    Total params: 72
    Trainable params: 72
    Non-trainable params: 0

4××2++1=72


1

通常はTensorflowを使用しますが、ドキュメントで確認できるように、Kerasに似ています。

基本的に、あなたが呼び出しLSTM(3)ているとき、あなたはこの画像のように互いの上にLSTMを作成していません1。これはまったく別の問題です。

ただし、作成時にはLSTM(3)3つの非表示のユニットまたは非表示のセルを含む LSTMを作成します。コードでは、3がLSTMの内部セルの次元になります。どういう意味ですか?つまり、非表示状態の次元と出力状態の次元は、非表示ユニットのパラメーターと同じになります。

LSTMをスカラーのシーケンスを取得し、スカラーを与えて出力するものとして想像する代わりに、これを想像してみてください。Tの長さのシーケンスがあり、各Tに512の値があるため、[Batchsize、T、512]となります。初めてtemp T = 1の場合、LSTMにこれらの512の値を一度に供給しますが、これは非表示の単位のおかげです。

私の説明があまり明確でない場合は、いくつかの参照とリンクを添付します。 QリファレンスSリファレンス

2スタックLSTM

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.