2016-06-23 5 views
4

나중에 파일을 예측할 수 있도록 파일로 저장하려는 tensorflow 모델을 만듭니다. 사용tensorflow 모델을 파일로 저장

  • (= tf.placeholder(tf.float32, [None, iVariableLen]))

  • input_placeholder solution_space
    (= tf.nn.sigmoid(tf.matmul(input_placeholder, weight_variable) + bias_variable))
  • 세션
    (= tf.Session())

나는 시도했다 : 특히, 내가 저장해야 sklearn binarizers 등의 다른 객체에서 작동하는 피클이지만 위의 것은 아닙니다. 하단에 오류가 발생합니다.

나는 피클 방법 :

dModel
import pickle 
with open(sModelSavePath, 'w') as fiModel: 
    pickle.dump(dModel, fiModel) 

내가에 대한 피팅에 사용하는 I가 지속하려는 모든 개체를 포함하는 사전입니다.

tensorflow 개체를 피클하는 방법에 대한 제안이 있으십니까?

오류 메시지 :

pickle.dump(dModel, fiModel) 
... 
    raise TypeError, "can't pickle %s objects" % base.__name__ 
TypeError: can't pickle module objects 
+1

에 의해 발생하는 대부분의 오류를 우회 할 수 있습니다 당신이 사용할 수 Tensorflow의 내장이에 대한 기능? https://www.tensorflow.org/versions/r0.9/how_tos/variables/index.html#saving-and-restoring –

답변

5

나는 이것이 이치 화기 같은 pickleing Sklearn 오브젝트에 의해였다 해결 방법, 실제 모델 tensorflow's inbuilt save functions 사용 :

저장 tensorflow 모델 :
1) 보통 모델을 빌드하십시오
2) tf.train.Saver()으로 세션을 저장하십시오. 예 :

oSaver = tf.train.Saver() 

oSess = oSession 
oSaver.save(oSess, sModelPath) #filename ends with .ckpt 

3) 이렇게하면 해당 세션의 사용 가능한 모든 변수 등을 해당 변수 이름에 저장합니다.

로드 tensorflow 모델는 :
1) 전체 유량이 재 초기화되어야한다. 즉, 변수, 가중치, 바이어스, 손실 함수 등을 선언해야하며 tf.initialize_all_variables()으로 초기화되고 oSession.run()
으로 전달됩니다. 2) 이제 해당 세션을 로더에 전달해야합니다. 나는 흐름을 추상화, 나의 로더는 다음과 같습니다 당신이 예측에 필요한 모든 객체가 내 경우에는 dAlg

PS에 앉아 당신의 초기화,에서 입수 할 필요)

dAlg = tf_training_algorithm() #defines variables etc and initializes session 

oSaver = tf.train.Saver() 
oSaver.restore(dAlg['oSess'], sModelPath) 

return { 
    'oSess': dAlg['oSess'], 
    #the other stuff I need from my algorithm, like my solution space etc 
} 

3 : 피클 같은 :

with open(sSavePathFilename, 'w') as fiModel: 
    pickle.dump(dModel, fiModel) 

with open(sFilename, 'r') as fiModel: 
    dModel = pickle.load(fiModel) 
0

당신은 하나 tensorflow의 개체입니다, 두 개의 분리 된 부분으로 프로젝트를 저장해야합니다, 다른 하나는 다른 개체입니다.나는 다음과 같은 도구를 사용하는 것이 좋습니다 :

  1. tf.saved_model을 : 절차에게 희망을 저장하고 모든 IT의 부하 tensorflow.
  2. dill : pickle에 따라 더 강력한 피클 도구, 당신이 pickle
관련 문제