Ich möchte eine neue MultiRNNCell erstellen, während die alten Gewichte wiederverwendet werden.Wie kann man Gewichte in MultiRNNCell wiederverwenden?
Ab TensorFlow 1.1, wenn Sie MultiRNNCell erstellen, müssen Sie explizit neue Zellen erstellen. Um Gewichte wiederzuverwenden, müssen Sie ein reuse=True
Flag angeben. In meinem Code habe ich zur Zeit:
import tensorflow as tf
from tensorflow.contrib import rnn
def create_lstm_multicell():
lstm_cell = lambda: rnn.LSTMCell(nstates, reuse=tf.get_variable_scope().reuse)
lstm_multi_cell = rnn.MultiRNNCell([lstm_cell() for _ in range(n_layers)])
return lstm_multi_cell
Wenn ich eine erste Multizellen schaffen sollte die Funktion wie erwartet, und jede Zelle innerhalb mehrschichtiges Element hat unabhängige Gewichte und Vorurteile.
with tf.variable_scope('lstm') as scope:
lstm1 = create_lstm_multicell()
Nun möchte ich gerne eine andere schaffen ein:
with tf.variable_scope('lstm') as scope:
scope.reuse_variables()
lstm2 = create_lstm_multicell()
ich die erste Zelle von lstm2
möchten die Gewichte und Voreingenommenheit der ersten Zelle zu verwenden, um von lstm1
, zweite Zelle Gewichtungen und Bias wiederzuverwenden der zweiten Zelle, etc. Aber ich vermute, dass, da ich rnn.LSTMCell
mit reuse=True
, Gewichte & Voreingenommenheiten der ersten Zelle wird die ganze Zeit wiederverwendet werden.
- Wie stelle ich sicher, dass die Gewichte ordnungsgemäß wiederverwendet werden?
- Wenn sie nicht sind, wie man dieses gewünschte Verhalten erzwingt?
P.S. Aus dem architektonischen Grund, den ich lstm1
nicht wiederverwenden möchte, möchte ich ein neues multicell lstm2
schaffen, das die gleichen Gewichte hat.
was meinen Sie mit der Wiederverwendung Ihrer Gewichte? Willst du eine Stateful Lstm bauen? – dv3
@ dv3 Nein, ich brauche nicht Statefu LSTM. Ich möchte nur, dass lstm1 und lstm2 sich identisch verhalten, d. H. Die Gewichte jeder Zelle in multicell sollten zwischen lstm1 und lstm2 identisch sein. –