Po przeczytaniu dokumentów zapisałem model w TensorFlow
, oto mój kod demo:
# Create some variables.
v1 = tf.Variable(..., name="v1")
v2 = tf.Variable(..., name="v2")
...
# Add an op to initialize the variables.
init_op = tf.global_variables_initializer()
# Add ops to save and restore all the variables.
saver = tf.train.Saver()
# Later, launch the model, initialize the variables, do some work, save the
# variables to disk.
with tf.Session() as sess:
sess.run(init_op)
# Do some work with the model.
..
# Save the variables to disk.
save_path = saver.save(sess, "/tmp/model.ckpt")
print("Model saved in file: %s" % save_path)
ale potem znalazłem 3 pliki
model.ckpt.data-00000-of-00001
model.ckpt.index
model.ckpt.meta
I nie mogę przywrócić modelu, przywracając plik model.ckpt
plik, ponieważ nie ma takiego pliku. Oto mój kod
with tf.Session() as sess:
# Restore variables from disk.
saver.restore(sess, "/tmp/model.ckpt")
Dlaczego więc są 3 pliki?
tensorflow
Idąc moją drogą
źródło
źródło
Odpowiedzi:
Spróbuj tego:
Metoda zapisywania TensorFlow zapisuje trzy rodzaje plików, ponieważ przechowuje strukturę wykresu oddzielnie od wartości zmiennych .
.meta
Plik opisuje strukturę zapisany wykres, więc trzeba zaimportować go przed odtworzeniem punktu kontrolnego (w przeciwnym razie nie wie, co zmienne zapisane wartości odpowiadają punktów kontrolnych).Alternatywnie możesz to zrobić:
Nawet jeśli nie ma pliku o nazwie
model.ckpt
, nadal odwołujesz się do zapisanego punktu kontrolnego o tej nazwie podczas jego przywracania. Zsaver.py
kodu źródłowego :źródło
00000
i00001
liczby oznaczają? wvariables.data-?????-of-?????
aktachplik meta : opisuje zapisaną strukturę wykresu, zawiera GraphDef, SaverDef i tak dalej; następnie zastosuje
tf.train.import_meta_graph('/tmp/model.ckpt.meta')
, przywróciSaver
iGraph
.plik indeksu : jest to niezmienna tabela typu string-string (tensorflow :: table :: Table). Każdy klucz jest nazwą tensora, a jego wartością jest serializowany BundleEntryProto. Każdy BundleEntryProto opisuje metadane tensora: który z plików "danych" zawiera zawartość tensora, przesunięcie w tym pliku, sumę kontrolną, niektóre dane pomocnicze itp.
plik danych : jest to kolekcja TensorBundle, zapisz wartości wszystkich zmiennych.
źródło
Przywracam wytrenowane osadzanie słów z samouczka tensorflow Word2Vec.
W przypadku, gdy utworzyłeś wiele punktów kontrolnych:
np. utworzone pliki wyglądają tak
Spróbuj tego
podczas wywoływania restore_session ():
źródło
Jeśli na przykład przeszkoliłeś CNN z porzuceniem, możesz zrobić to:
źródło