Ich versuche, ein mehrschichtiges rekurrentes neuronales Netzwerk mit GRU-Einheiten (sowie LSTM-Einheiten) in Tensorflow zu erstellen. Ich habe mir mehrere Quellen angesehen, einschließlich des offiziellen Tutorials. Aber ich sehe das folgende Muster für mehrschichtige RNNs (hier mit GRU-Einheiten gezeigt).Erstellen mehrschichtiger rekurrenten neuronalen Netzwerk in Tensorflow
cell = GRUCell(num_neurons) # Or LSTMCell(num_neurons)
cell = DropoutWrapper(cell, output_keep_prob=dropout)
cell = MultiRNNCell([cell] * num_layers)
Dieser Codeausschnitt stammt aus RNN Tensorflow Introduction. Mein Verständnis von [cell] * num_layers
ist, dass das gleiche Objekt cell
in der Liste num_layer
mal referenziert wird. Also, wird nicht die MultiRNNCell
erstellen ein tiefes Netzwerk, wo jeder Layer die gleichen Gewichte wie die vorherigen hat. Wenn jemand klären kann, was genau hier passiert, wäre das sehr aufschlussreich.
Zunächst ja. Die Gewichte sind für jede Schicht der GRU/LSTM-Einheiten gleich. Aber wie das neuronale Netz lernt, sollen diese Gewichte aktualisiert werden. Wenn Sie also eine gestapelte RNN (GRU/LSTM) erstellen, müssen Sie 'tf.nn.dynamic_rnn (cell, x, initial_state = Hin)' haben. Von dem, was ich verstehe, wird das "Hin" die Zustände der GRU/LSTM-Einheiten tragen, das heißt, es hat auch die Gewichte pro Schicht. –