私は、テンソルフローのGRUユニット(LSTMユニットでもよい)を備えた多層リカレントニューラルネットワークを作成しようとしています。私は公式のチュートリアルを含む複数のソースを見てきました。しかし、私は多層RNN(GRUユニットでここに示されている)のために次のパターンを見ています。テンソルフローにおける多層リカレントニューラルネットワークの作成
cell = GRUCell(num_neurons) # Or LSTMCell(num_neurons)
cell = DropoutWrapper(cell, output_keep_prob=dropout)
cell = MultiRNNCell([cell] * num_layers)
このコードスニペットはRNN Tensorflow Introductionです。 [cell] * num_layers
の私の理解は、同じオブジェクトcell
がリスト内でnum_layer
回参照されるということです。したがって、MultiRNNCell
は、各レイヤーが以前のレイヤーと同じウェイトを持つディープネットワークを作成しません。誰かがここで何が起こっているのかを明確にすることができれば、非常に洞察力があるでしょう。
最初は、はい。ウェイトは、GRU/LSTMユニットのレイヤーごとに同じです。しかし、ニューラルネットが学習すると、それらの重みが更新される。そのため、スタックされたRNN(GRU/LSTM)を作成するときは、 'tf.nn.dynamic_rnn(cell、x、initial_state = Hin)'を設定する必要があります。私が理解しているところから、 'Hin'はGRU/LSTMユニットの状態を運ぶでしょう。つまり、層ごとの重みもあります。 –