TensorFlow, 모델을 저장 한 후 3 개의 파일이있는 이유는 무엇입니까?
문서 를 읽은 후에 모델을 저장했습니다 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 개의 파일이 있습니까?
이 시도:
with tf.Session() as sess:
saver = tf.train.import_meta_graph('/tmp/model.ckpt.meta')
saver.restore(sess, "/tmp/model.ckpt")
TensorFlow 저장 방법은 그래프 구조를 변수 값 과 별도로 저장하므로 세 종류의 파일을 저장 합니다 . 이 .meta
파일은 저장된 그래프 구조를 설명하므로 체크 포인트를 복원하기 전에 가져와야합니다 (그렇지 않으면 저장된 체크 포인트 값이 어떤 변수에 해당하는지 알 수 없음).
또는 다음을 수행 할 수 있습니다.
# Recreate the EXACT SAME variables
v1 = tf.Variable(..., name="v1")
v2 = tf.Variable(..., name="v2")
...
# Now load the checkpoint variable values
with tf.Session() as sess:
saver = tf.train.Saver()
saver.restore(sess, "/tmp/model.ckpt")
Even though there is no file named model.ckpt
, you still refer to the saved checkpoint by that name when restoring it. From the saver.py
source code:
Users only need to interact with the user-specified prefix... instead of any physical pathname.
meta file: describes the saved graph structure, includes GraphDef, SaverDef, and so on; then apply
tf.train.import_meta_graph('/tmp/model.ckpt.meta')
, will restoreSaver
andGraph
.index file: it is a string-string immutable table(tensorflow::table::Table). Each key is a name of a tensor and its value is a serialized BundleEntryProto. Each BundleEntryProto describes the metadata of a tensor: which of the "data" files contains the content of a tensor, the offset into that file, checksum, some auxiliary data, etc.
data file: it is TensorBundle collection, save the values of all variables.
I am restoring trained word embeddings from Word2Vec tensorflow tutorial.
In case you have created multiple checkpoints:
e.g. files created look like this
model.ckpt-55695.data-00000-of-00001
model.ckpt-55695.index
model.ckpt-55695.meta
try this
def restore_session(self, session):
saver = tf.train.import_meta_graph('./tmp/model.ckpt-55695.meta')
saver.restore(session, './tmp/model.ckpt-55695')
when calling restore_session():
def test_word2vec():
opts = Options()
with tf.Graph().as_default(), tf.Session() as session:
with tf.device("/cpu:0"):
model = Word2Vec(opts, session)
model.restore_session(session)
model.get_embedding("assistance")
If you trained a CNN with dropout, for example, you could do this:
def predict(image, model_name):
"""
image -> single image, (width, height, channels)
model_name -> model file that was saved without any extensions
"""
with tf.Session() as sess:
saver = tf.train.import_meta_graph('./' + model_name + '.meta')
saver.restore(sess, './' + model_name)
# Substitute 'logits' with your model
prediction = tf.argmax(logits, 1)
# 'x' is what you defined it to be. In my case it is a batch of RGB images, that's why I add the extra dimension
return prediction.eval(feed_dict={x: image[np.newaxis,:,:,:], keep_prob_dnn: 1.0})
참고URL : https://stackoverflow.com/questions/41265035/tensorflow-why-there-are-3-files-after-saving-the-model
'IT story' 카테고리의 다른 글
WPF ColumnDefinition에서 * (별표)의 의미? (0) | 2020.08.20 |
---|---|
파이썬에서 hash (n) == n은 언제입니까? (0) | 2020.08.20 |
GPL 및 LGPL 오픈 소스 라이선스 제한 [닫힘] (0) | 2020.08.20 |
Automapper-속성 설정자 대신 생성자 매개 변수에 매핑하는 방법 (0) | 2020.08.20 |
awk 인쇄 열 $ 3 if $ 2 == a specific value? (0) | 2020.08.20 |