2016-07-04 6 views
0

Ich stelle gespeicherte Parameter eines Modells in Tensorflow wieder her. Ich möchte test difference configure für mein Modell mit verschiedenen Ebenen und verschiedenen Parametergrößen konfigurieren.Wie kann der Checkpoint von TensorFlow in geänderten Parametern und Modellen wiederhergestellt werden?

zum Beispiel, wenn einer meiner Parameter, die ich so sein gespeichert: W_conv1 = weight_variable([7 , 7, 1, 64])

wenn ich diese wiederherstellen, es funktioniert; aber ich möchte, dass meine Parameter wie folgt ändern: W_conv1 = weight_variable([5 , 5, 1, 64]) oder W_conv1 = weight_variable([5 , 5, 1, 50]) oder W_conv1 = weight_variable([9 , 9, 1, 80]) oder ....

Jetzt möchte ich meinen gespeicherten Checkpoint für die Wiederherstellung in der neuen Konfiguration verwendet. Wenn die Größe jeder Dimension von Parametern geändert wurde, wurde sie zufällig von meinem gespeicherten Parameter initialisiert und Orte werden zufällig initialisiert.

Ist dies im Tensorflow möglich?

+0

Kann die 'reshape = True' in' tf.train.saver' verwenden? – Tavakoli

Antwort

0

TensorFlow stellt Operatoren zur Verfügung, um eine Scheibe einer vorhandenen Variablen (tf.slice) zu erhalten, und auch Operatoren, um einer vorhandenen Variablen (tf.assign) einen Wert (möglicherweise eine Scheibe) zuzuweisen. Also, was wollen Sie mit den folgenden Schritten erreicht werden:

  • Stellen Sie Ihre alte Variable vom Checkpoint
  • Ihre neue Variable unterschiedlicher Form erstellen, initialisiert zufällig
  • Weisen Sie die entsprechende Scheibe Ihrer alten Variable auf die neue Variable

zum Beispiel, wenn Ihre alte Variable hat die Form [7, 7, 1, 64] und Ihre neue Variable hat die Form [5, 5, 1, 64], hier ist ein Rezept, um die alte Variable und die Zuordnung zu dem neuen variabl zum Schneiden e:

# old_variable has the shape [7, 7, 1, 64] 
new_variable = tf.Variable(np.random.rand(5, 5, 1, 64)) 
assign_new_var = tf.assign(new_variable, old_variable([:5, :5, :, :])) 
+0

Wenn ich diesen Code 'tf.assign (tf.Variable (tf.truncated_normal ([7200, 1000], stddev = std), W_fc1)' es macht Fehler: 'ValueError: Shapes (7200, 1000) und (7200 , 150) sind nicht kompatibel mit 'W_fc1 = weight_variable ([7200, 150])' – Tavakoli

+0

Wenn Sie versuchen, einen '7200 x 150' Tensor einer' 7200 x 1000' Variablen zuzuweisen, * und * wollen Sie das Ergebnis Variable auf '7200 x 100', dann müssen Sie ['tf.pad()'] (https://www.tensorflow.org/api_docs/python/tf/pad) verwenden, um es in die richtige Größe zu konvertieren . – mrry

Verwandte Themen