std::cout << "Tensorflow Version: " << TF_Version() << std::endl;

// Create variables for tensorflow
TF_Buffer* run_options = TF_NewBufferFromString("", 0);
TF_SessionOptions* session_options = TF_NewSessionOptions();
TF_Graph* graph = TF_NewGraph();
TF_Status* status = TF_NewStatus();
std::array<char const*, 1> tags{ "serve" };

// Load Model
TF_Session* session = TF_LoadSessionFromSavedModel(
		session_options, run_options, "./model/mobilenetv1_64_padding", 
		tags.data(), tags.size(), graph, nullptr, status);
		
// Check Model
if (TF_GetCode(status) != TF_OK) {
	std::cout << TF_Message(status) << '\n';
}

TF_Operation* input_op = TF_GraphOperationByName(graph, "serving_default_input");
TF_Operation* output_op = TF_GraphOperationByName(graph, "StatefulPartitionedCall");

 

여기서 input_op와 output_op의 이름은 Saved Model CLI 에서 확인 가능합니다.

 

 

 

Windows를 사용하고 있고

 

Saved Model CLI 는 anaconda를 사용하고 있다면

 

Saved Model CLI는 아래 경로에 위치하고 있습니다.

 

 

 

 

 

 

 

C:/Users/TEST/anaconda3/envs/가상환경이름/Lib/site-packages/tensorflow/python\tools/

 

↑ Saved Model CLI 의 위치

 

이후 cmd 창에서 아래 명령어를 실행해주면

 

python saved_model_cli.py show --dir ./mobilenetv1_64_padding --tag_set serve --signature_def serving_default

 

아래와 같은 결과가 나오게 됩니다.

 

 

모델마다 input의 개수가 달라질 수 있으니 유의해야 합니다.

 

 

 

 

 

 

 

출처 :

https://int-i.github.io/cpp/2020-11-18/libtensorflow/

https://www.tensorflow.org/guide/saved_model#details_of_the_savedmodel_command_line_interface

https://sequencedata.tistory.com/15

https://www.dbersan.com/blog/tensorflow-cpp1/

https://github.com/tensorflow/models/issues/6150

+ Recent posts