2017-10-31 4 views
0

에서 복원 내가 만든 tensorflow에 윈 간단한 저장 : - 저장하고 다른 폴더

import tensorflow as tf 
import numpy as np 

x = tf.placeholder(tf.float32, [1, 1],name='input_placeholder') 
y = tf.placeholder(tf.float32, [1, 1],name='input_placeholder') 
W = tf.get_variable('W', [1, 1]) 
layer = tf.matmul(x, W, name='layer') 
loss = tf.subtract(y,layer) 
train_step = tf.train.AdagradOptimizer(0.1).minimize(loss, name='train_step') 
all_saver = tf.train.Saver() 

sess = tf.Session() 
sess.run(tf.global_variables_initializer()) 

x_test = np.zeros((1, 1)) 
y_test = np.zeros((1, 1)) 
some_output = sess.run([train_step],feed_dict = {x:x_test,y:y_test}) 

save_path = r'C:\Temp\tf_exp\save_folder\test' 
all_saver.save(sess,save_path) 

가 그럼 난 C:\Temp\tf_exp\restore_folder에 (정확히 복사되지 이동되는) C:\Temp\tf_exp\save_folder\의 모든 파일을 가져다가 그들을 움직였다. 내가 이동 파일은 다음과 같습니다
checkpoint 
test.data-00000-of-00001 
test.index 
test.meta 

가 그럼 난 새 위치에서 윈를 복원하려고 :

C:\Temp\tf_exp\restore_folder\\ 
ERROR:tensorflow:Couldn't match files for checkpoint C:\Temp\tf_exp\save_folder\test 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-2-9af4e683fc4b> in <module>() 
     5 new_all_saver = tf.train.import_meta_graph(meta_path) 
     6 sess=tf.Session() 
----> 7 new_all_saver.restore(sess, tf.train.latest_checkpoint(checkpoint_path)) 
     8 graph = tf.get_default_graph() 
     9 layer= graph.get_tensor_by_name('layer:0') 

~\AppData\Local\conda\conda\envs\tensorflow\lib\site-packages\tensorflow\python\training\saver.py in restore(self, sess, save_path) 
    1555  return 
    1556  if save_path is None: 
-> 1557  raise ValueError("Can't load save_path when it is None.") 
    1558  logging.info("Restoring parameters from %s", save_path) 
    1559  sess.run(self.saver_def.restore_op_name, 

ValueError: Can't load save_path when it is None. 

가 어떻게 방지 할 수 있습니다

여기
meta_path = r'C:\Temp\tf_exp\restore_folder\test.meta' 
checkpoint_path = r'C:\Temp\tf_exp\restore_folder\\' 
print(checkpoint_path) 
new_all_saver = tf.train.import_meta_graph(meta_path) 
sess=tf.Session() 
new_all_saver.restore(sess, tf.train.latest_checkpoint(checkpoint_path)) 
graph = tf.get_default_graph() 
layer= graph.get_tensor_by_name('layer:0') 
x=graph.get_tensor_by_name('input_placeholder:0') 

코드가 생성 복원 오류가된다 그것? 파일을 옮기는 적절한 방법은 무엇입니까?

업데이트 : 나는 대답을 찾고 있어요으로

상대 경로를 사용하여 이동하는 방법이처럼, 그것은 보인다. 하지만 상대 경로를 사용하는 방법을 잘 모르겠습니다. 파이썬의 현재 작업 디렉토리를 모델 데이터를 저장하는 위치로 변경해야합니까? tf.train.Saver()를 만들 때

답변

1

그냥 save_relative_paths=True을 추가

# original code: all_saver = tf.train.Saver() 
all_saver = tf.train.Saver(save_relative_paths=True) 

은 자세한 내용은 official doc를 참조하십시오.