2016-09-12 7 views
5

In meinem neuronales Netz schaffe ich einige tf.Variable Objekte wie folgt:Speichern spezifischen Gewichte in TensorFlow

weights = { 
    'wc1_0': tf.Variable(tf.random_normal([5, 5, 3, 64])), 
    'wc1_1': tf.Variable(tf.random_normal([5, 5, 3, 64])) 
} 
biases = { 
    'bc1_0': tf.Variable(tf.constant(0.0, shape=[64])), 
    'bc1_1': tf.Variable(tf.constant(0.0, shape=[64])) 
} 

Wie würde ich die Variablen in weights und biases nach einer bestimmten Anzahl von Iterationen ohne Speichern anderen Variablen speichern?

+0

Es gibt einige verschiedene Möglichkeiten, dies zu tun. Sie können einen Tensorflow-Saver verwenden oder Ihr Lieblingsformat wie h5 oder npy verwenden. – jean

+0

danke, ich habe es. – luohao

Antwort

5

Die Standardmethode zum Speichern von Variablen in TensorFlow ist die Verwendung eines Objekts tf.train.Saver. Standardmäßig speichert sie alle Variablen in Ihrem Problem (dh die Ergebnisse der tf.all_variables()), aber Sie können, indem man das var_list optionales Argument an die tf.train.Saver Konstruktor Variablen selektiv speichern:

weights = { 
    'wc1_0': tf.Variable(tf.random_normal([5, 5, 3, 64])), 
    'wc1_1': tf.Variable(tf.random_normal([5, 5, 3, 64])) 
} 
biases = { 
    'bc1_0': tf.Variable(tf.constant(0.0, shape=[64])), 
    'bc1_1': tf.Variable(tf.constant(0.0, shape=[64])) 
} 

# Define savers for explicit subsets of the variables. 
weights_saver = tf.train.Saver(var_list=weights) 
biases_saver = tf.train.Saver(var_list=biases) 

# ... 
# You need a TensorFlow Session to save variables. 
sess = tf.Session() 
# ... 

# ...then call the following methods as appropriate: 
weights_saver.save(sess) # Save the current value of the weights. 
biases_saver.save(sess) # Save the current value of the biases. 

Beachten Sie, dass, wenn Sie übergeben ein Wörterbuch zum tf.train.Saver Konstruktor (wie die weights und/oder biases Wörterbücher aus Ihrer Frage), TensorFlow wird die Wörterbuch-Taste (zB 'wc1_0') als Namen für die entsprechende Variable in jedem Kontrollpunkt verwenden, um Dateien es oder verbraucht erstellt .

Standardmäßig wird TensorFlow stattdessen die -Eigenschaft verwenden, wenn Sie dem Konstruktor eine Liste von tf.Variable-Objekten übergeben.

Das Übergeben eines Wörterbuchs gibt Ihnen die Möglichkeit, Prüfpunkte zwischen Modellen zu teilen, die jeder Variablen verschiedene Variable.name-Eigenschaften geben. Dieses Detail ist nur wichtig, wenn Sie die erstellten Prüfpunkte mit einem anderen Modell verwenden möchten.

Verwandte Themen