0
我已經訓練了一個使用Python使用Tensorflow實現的網絡。最後,我用tf.train.Saver()保存了模型。現在我想用C++來使用這個預先訓練好的網絡進行預測。使用Tensorflow檢查點在C++中恢復模型
我該怎麼做?有沒有辦法轉換檢查點,所以我可以使用tiny-dnn或Tensorflow C++?
歡迎任何想法:)謝謝!
我已經訓練了一個使用Python使用Tensorflow實現的網絡。最後,我用tf.train.Saver()保存了模型。現在我想用C++來使用這個預先訓練好的網絡進行預測。使用Tensorflow檢查點在C++中恢復模型
我該怎麼做?有沒有辦法轉換檢查點,所以我可以使用tiny-dnn或Tensorflow C++?
歡迎任何想法:)謝謝!
您可能應該在SavedModel format中導出模型,它封裝了計算圖和保存的變量(tf.train.Saver
僅保存變量,因此您必須保存圖)。
然後,您可以使用LoadSavedModel
以C++加載保存的模型。
確切的調用將取決於您的模型的輸入和輸出是什麼。但是,Python代碼會看起來像這樣:
# You'd adjust the arguments here according to your model
signature = tf.saved_model.signature_def_utils.predict_signature_def(
inputs={'image': input_tensor}, outputs={'scores': output_tensor})
builder = tf.saved_model.builder.SavedModelBuilder('/tmp/my_saved_model')
builder.add_meta_graph_and_variables(
sess=sess,
tags=[tf.saved_model.tag_constants.SERVING],
signature_def_map={
tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:
signature
})
builder.save()
然後在C++中,你會做這樣的事情:
tensorflow::SavedModelBundle model;
auto status = tensorflow::LoadSavedModel(session_options, run_options, "/tmp/my_saved_model", {tensorflow::kSavedModelTagServe}, &model);
if (!status.ok()) {
std::cerr << "Failed: " << status;
return;
}
// At this point you can use model.session
(注意,使用SavedModel格式也可以讓您以服務模式使用TensorFlow Serving,如果這對您的應用程序有意義)
希望有所幫助。
看起來像那正是我需要的!我會嘗試一下,我會告訴你!謝謝 ! –