Ich versuche ein Tensorflow-Diagramm zu machen, wo ein Teil des Graphen bereits vortrainiert ist und im Vorhersage-Modus läuft, während der Rest trainiert. Ich habe wie so meine vortrainiert Zelle definiert:Wie macht man die Gewichte einer RNN-Zelle im Tensorflow unzugänglich?
rnn_cell = tf.contrib.rnn.BasicLSTMCell(100)
state0 = tf.Variable(pretrained_state0,trainable=False)
state1 = tf.Variable(pretrained_state1,trainable=False)
pretrained_state = [state0, state1]
outputs, states = tf.contrib.rnn.static_rnn(rnn_cell,
data_input,
dtype=tf.float32,
initial_state = pretrained_state)
die anfänglichen Variablen trainable=False
Einstellung hilft nicht. Diese werden nur verwendet, um die Gewichte zu initialisieren, und als Ergebnis ändern sich die Gewichte noch.
Ich muss noch einen Optimierer in meinem Trainingsschritt ausführen, da der Rest meines Modells trainieren muss. Aber wie kann ich verhindern, dass der Optimierer die Gewichte in dieser Zelle ändert?
Gibt es eine rnn_cell entspricht trainable=False
?
Die Ausgabe des vortrainierten Modells ist eine Eingabe von Ihrem neuen Modell trainiert werden? Wenn ja, warum nicht einfach das vortrainierte Modell vorberechnen? Ich meine, dass nur zwei Grafiken unabhängig voneinander bleiben. –
@YuwenYan Sie haben Recht, ich könnte das tun. Ich hatte gehofft, Vorberechnung zu vermeiden, indem ich die zwei Diagramme zusammen laufen ließ, da es einfacher wäre, sicherzustellen, dass alle Daten aufgereiht sind und einen Schritt jedes Mal speicherten, wenn ich das vortrainierte Modell ändern wollte – AlexR