2016-06-23 4 views
4

ファイルに保存したいテンソルフローモデルを作成し、後でそれを予測できるようにします。特に、私は保存する必要があります。テンソルフローモデルをファイルに保存する


  • = tf.placeholder(tf.float32, [None, iVariableLen])
  • solution_space
    = tf.nn.sigmoid(tf.matmul(input_placeholder, weight_variable) + bias_variable)
  • セッション
    = tf.Session()

input_placeholder私が使用して試してみましたsklearn binarizersなどの他のオブジェクトで動作するピクルスですが、上記のものではありません。下部にエラーが表示されます。私はピクルスどう

dModelは、私は反対フィッティングのために使用私は存続するすべてのオブジェクトを、含まれている辞書です
import pickle 
with open(sModelSavePath, 'w') as fiModel: 
    pickle.dump(dModel, fiModel) 

テンソルフローオブジェクトをどのようにピクルするかについてのご意見はありますか?

エラーメッセージ

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

Iこれはbinarizersようなpickleing Sklearnオブジェクトであって、実際のモデルのtensorflow's inbuilt save functionsを使用して解決方法:
1:tensorflowモデル保存

)通常通りにモデルを構築してください
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 = 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)すべて私の場合にはdAlg

に座って、あなたの初期の外に得する必要が予測のために必要なオブジェクト、

PS:ピクルスこのように:

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

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

あなたは1がtensorflowのオブジェクト用で、2つの別個の部分にあなたのプロジェクトを保存する必要があり、他には、他のオブジェクトのためです。私は、次のツールを使用することをお勧めいたします:

  1. tf.saved_model:すべてその中に保存されたと手順あなたの望み、負荷tensorflow
  2. dillpickleに基づいて、より強力な漬物ツール、それはあなたがpickle
関連する問題