Прочитав документацию , я сохранил модель TensorFlow
, вот мой демонстрационный код:
# 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)
но после этого я обнаружил, что есть 3 файла
model.ckpt.data-00000-of-00001
model.ckpt.index
model.ckpt.meta
И я не могу восстановить модель путем восстановления model.ckpt
файла, так как такого файла нет. Вот мой код
with tf.Session() as sess:
# Restore variables from disk.
saver.restore(sess, "/tmp/model.ckpt")
Итак, почему здесь 3 файла?
tensorflow
GoingMyWay
источник
источник
Ответы:
Попробуй это:
Метод сохранения TensorFlow сохраняет файлы трех типов, поскольку он хранит структуру графика отдельно от значений переменных .
.meta
Файл описывает сохраненную структуру графа, так что вам нужно импортировать его перед восстановлением контрольной точки ( в противном случае он не знает , какие переменные сохраненные значения контрольных точек соответствуют).В качестве альтернативы вы можете сделать это:
Несмотря на то, что имени файла нет
model.ckpt
, вы все равно будете ссылаться на сохраненную контрольную точку с этим именем при ее восстановлении. Изsaver.py
исходного кода :источник
00000
и00001
цифры? вvariables.data-?????-of-?????
файлеметафайл : описывает сохраненную структуру графа, включает GraphDef, SaverDef и так далее; потом применим
tf.train.import_meta_graph('/tmp/model.ckpt.meta')
, восстановлюSaver
иGraph
.индексный файл : это неизменяемая таблица типа строка-строка (tensorflow :: table :: Table). Каждый ключ - это имя тензора, а его значение - это сериализованный BundleEntryProto. Каждый BundleEntryProto описывает метаданные тензора: какой из файлов «данных» содержит содержимое тензора, смещение в этом файле, контрольную сумму, некоторые вспомогательные данные и т. Д.
файл данных : это коллекция TensorBundle, сохраните значения всех переменных.
источник
Я восстанавливаю обученные вложения слов из учебника по тензорному потоку Word2Vec.
Если вы создали несколько контрольных точек:
например, созданные файлы выглядят так
попробуй это
при вызове restore_session ():
источник
Если вы, например, тренировали CNN с отсеиванием, вы могли бы сделать это:
источник