2016-07-18 6 views
2

파일을 사용하여 모델을 복원하려고합니다. 을 tensorflow/models/embedding에 실행했습니다. 변수를 복원하여 tf 변수가 모두 캡슐화되고 클래스가 tensorflow/models/embedding/word2vec_optimized.py으로 초기화되기 때문에 모델을로드하고 사용할 수 있도록하는 방법을 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다.tensorflow 모델을 복원하는 방법은 무엇입니까?

또한 .ckpt을 "복원"하면 을 사용하여 모델을 복원 할 때 실제로 Wor2Vec 인스턴스가 생기거나 실제로 얻은 결과가 있습니까?

답변

1

보호기에서 저장 기능을 호출하면 모델을 교육하는 데 사용한 tf.Session을 전달합니다. 여기에는 모든 변수가 포함 된 그래프에 대한 참조가 포함됩니다. 파이썬 변수와 텐서 흐름 변수를 혼동하지 마십시오. 여러분이 만든 텐서 흐름 변수를 가리키는 파이썬 변수를 더 이상 가지고 있지 않더라도 계산 그래프의 일부인 경우 여전히 존재합니다. 모델을 만든 후에 다음 코드를 실행 해보십시오.

for v in tf.all_variables(): 
    print(v.name) 

이렇게하면 생성 한 모든 변수의 이름이 인쇄됩니다. 보호기는 기본적으로이 모든 것을 저장합니다. 변수를 복원 할 때 변수의 이름이 같으면 생성 된 변수의 위치는 중요하지 않습니다. 모든 변수가 모델에 추가 된 후에는 복원을 수행하십시오. 변수에 이니셜 라이저를 지정하면 sess.run(tf.initialize_all_variables())을 호출 할 때만 초기화가 실행됩니다. 값을 복원하는 중이면이 함수를 호출 할 필요가 없습니다. 나는 종종 다음 코드를 사용한다.

sess = tf.Session() 
saver = tf.train.Saver() 
if 'restore' in sys.argv: 
    saver.restore(sess, '/media/chase/98d61322-9ea7-473e-b835-8739c77d1e1e/model.chk') 
else: 
    sess.run(tf.initialize_all_variables()) 

이 코드는 내부에서 변수를 만드는 thensorflow RNN 클래스를 사용할 때 잘 작동합니다.

관련 문제