2016-12-30 2 views
1

을 저장할 수 없습니다 ... 나는 tensorflow 보호기를 구성하기 위해이 코드를 사용합니다. 그러나 저장 디렉터리를 "/ tmp"대신 내 사용자 지정 디렉터리로 지정하면 갑자기 저장된 모델은 다음과 같은 파일입니다.Tensorflow 내가 이상한 문제가 발생 모델

translate.ckpt-329.data-00000- 의-00001

translate.ckpt-329.index

translate.ckpt-329.meta

내가 파일 "translate.ckpt-329"를 찾을 수 없습니다. 이 파일이 존재 내 모델을 복원 나를 위해 문제를 만들지 않습니다 동안

model_checkpoint_path: "/Users/.../train_dir/translate.ckpt-329" 
all_model_checkpoint_paths: "/Users/.../train_dir/translate.ckpt-329" 

:

생성 된 검사 점 파일을 가리키고 있습니다.

누군가가이 부분에 어떤 빛을 비춰 줄 수 있습니까 ?? 무엇이 문제 일 수 있습니까?


첫 번째 답변에 감사드립니다!

원래 코드는 세션을 복원하려면이 방법을 사용합니다 : 내 더 큰 문제는 restore 방법입니다 생각

ckpt = tf.train.get_checkpoint_state(FLAGS.train_dir) 
model.saver.restore(session, ckpt.model_checkpoint_path) 

절약 :(

if ckpt and tf.gfile.Exists(ckpt.model_checkpoint_path): 
     logging.info("Reading model parameters from %s" % ckpt.model_checkpoint_path) 
     model.saver.restore(session, ckpt.model_checkpoint_path) 
    else: 
     logging.info("Created model with fresh parameters.") 
     session.run(tf.global_variables_initializer()) 
+0

'restore()'가 실패한 오류는 무엇입니까? – mrry

+0

@mrry ahhh! 이제 이해가됩니다. 그것은 실패한'tf.gfile.Exists()'입니다 ...'restore()'가 실패하지 않았습니다. V2에 저장된 검사 점 파일이 모델에 있는지 확인하는 것이 좋습니다. –

+0

좋은 질문입니다 ... 아무 것도 없다고 생각합니다. ([tf.train.latest_checkpoint()'] (https : //www.tensorflow.org/api_docs/python/state_ops/saving_and_restoring_variables # latest_checkpoint)를 사용하여 올바른 작업을 수행 할 수 있습니다. 이것은 합리적인 기능 요청처럼 보이지만, 상당수의 사람들이 유사한 문제에 직면 해 있다고 생각하기 때문에 ... GitHub 문제를 자유롭게 열어서 적절한 사람에게 전달할 것입니다. – mrry

답변

3

TL V2에 실패; DR을 : 새로운 검사 점 형식에서는 저장자에게 전달하는 "파일 이름"이 실제로 여러 파일 이름의 접두사로 사용되며 정확한 이름을 가진 파일이 기록되지 않습니다. 012를 구성하여 이전 검사 점 형식을 사용할 수 있습니다에는 선택적 인수 write_version=tf.train.SaverDef.V1이 있습니다.

저장된 파일의 이름에서 TensorFlow 0.12의 기본값이 된 "V2"검사 점 형식을 사용하고있는 것 같습니다. 이 형식은 검사 점 데이터를 여러 파일에 저장합니다. 하나 이상의 데이터 파일 (예 : translate.ckpt-329.data-00000-of-00001)과 TensorFlow에게 각 저장된 변수가 데이터 파일에있는 위치를 알려주는 색인 파일 (translate.ckpt-329.index)이 저장됩니다. tf.train.Saver은 이러한 파일 이름의 접두사로 전달하는 "파일 이름"을 사용하지만 정확한 이름을 가진 파일은 생성하지 않습니다.

제공된 정확한 이름의 파일이 없지만 saver.save()에서 반환 된 값을 후속 saver.restore()의 인수로 사용할 수 있으며 다른 검사 점 위치 지정 메커니즘은 이전과 같이 계속 작동해야합니다.

+0

다시 V1로 돌아갈 방법이 있습니까? 주로 자동 저장/로딩 메커니즘이 코드 안에 내장되어 있기 때문에 (그리고 나) ... 나는 어떤 것도 혼란스럽지 않으려 고합니다. –

+1

예 :'write_version = tf.train.SaverDef.V1' 옵션 인자를'tf.train.Saver' 초기화 프로그램에 전달하십시오. – mrry

+0

감사합니다 !!! 도움이 될 것입니다! 나는 또한 약간의 질문을 업데이트했다 ... 당신이 그것을 다시보고 싶다면 –