Ответ 1
Контрольная точка содержит значение (некоторые из) переменных в модели TensorFlow. Он создается Saver
, которому либо присваивается конкретный Variable
для сохранения, либо по умолчанию сохраняет все (нелокальные) переменные.
Чтобы использовать контрольную точку, вам необходимо иметь совместимый TensorFlow Graph
, чьи Variable
имеют те же имена, что и Variable
в контрольной точке. (Если у вас нет совместимого Graph
, вы можете загрузить значения, сохраненные в контрольной точке, в выбранный Variable
, используя init_from_checkpoint
Утилиты в Contrib.)
SavedModel
является более полным: он содержит набор Graph
(MetaGraph
s, на самом деле, сохранение коллекций и т.д.), а также контрольную точку, которая должна быть совместима с этими Graph
s, и любые файлы активов, которые необходимы для запуска (например, файлы словаря). Для каждого MetaGraph
он содержит, он также хранит набор подписей. Подписи определяют (называются) входные и выходные тензоры.
Это означает, что с учетом только SavedModel вы можете писать инструменты (например, tensorflow/serving
или новую утилиту командной строки saved_model
, которая будет отображаться в tools/
в ближайшее время), которые интерпретируют или выполняют графики внутри. Все, что вам нужно предоставить, это данные.
Если у вас есть сомнения, я всегда буду ошибаться в написании SavedModel
, а не только контрольной точки. Это не только позволяет вам использовать функции tensorflow/serve (и другие аккуратные утилиты, которые будут расти в количестве), это гарантирует, что у вас есть вся информация, необходимая для запуска модели. Нет ничего более неприятного, чем контрольная точка, которую вы больше не можете использовать, потому что вы изменили свою модель и теперь она несовместима с файлами контрольных точек, и все, что вы хотите сделать, это запустить некоторые предсказания через нее для сравнения.