Standardowym sposobem zapisywania zmiennych w TensorFlow jest użycie obiektu tf.train.Saver
. Domyślnie zapisuje wszystkie zmienne w swoim problemie (czyli wyniki tf.all_variables()
), ale można zapisać zmienne selektywnie przepuszczając var_list
opcjonalny argument do konstruktora tf.train.Saver
:
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.
pamiętać, że jeśli przekazać słownika do konstruktora tf.train.Saver
(takie jak weights
i/lub biases
słowników z pytaniem), TensorFlow będzie użyć klawisza słownika (np 'wc1_0'
) jako nazwę dla odpowiedniej zmiennej w dowolnym punkcie kontrolnym pliki, tworzy lub zużywa .
Domyślnie, lub jeśli przekażesz listę obiektów tf.Variable
do konstruktora, TensorFlow użyje zamiast tego właściwości tf.Variable.name
.
Przekazywanie słownika umożliwia dzielenie punktów kontrolnych między modelami, które dają różne właściwości Variable.name
dla każdej zmiennej. Ten szczegół jest ważny tylko wtedy, gdy chcesz użyć utworzonych punktów kontrolnych z innym modelem.
Istnieje wiele różnych sposobów robienia tego. Możesz użyć wygaszacza tensorflow lub użyć swojego ulubionego formatu, np. H5 lub npy. – jean
dzięki, mam to. – luohao