프로그래밍/Tensorflow

텐서플로우 Train 모델 C에서 Load하기

바람냥냥 2018. 6. 7. 22:53

- Tensorflow 에서 학습된 모델을 다른 언어 환경에서 Load해서 사용 가능하다

- Protocol Buffers( 일련의 데이터를 구조체저럼 저장) 로 파일을 저장(binary 확장명 .pb, text형태도 저장 가능(pbext

hellotensor.pbtxt


-> name, op, input, attr 으로 구성되어 있는것을 확인 할수 있다.

- 각 노드(node)는 자신의 고유 이름(name)을 가지고 있다.



- Tensorflow API 공식사이트 설명

https://www.tensorflow.org/extend/tool_developers/


 : 위에 사이트에 살펴보면 freeze_graph.py 라고 github 예제 코드가 있음

- freeze_graph.py 모듈을 사용 정의한 그래프(graph)와 checkoints를 파일 하나에 저장


- 사용법에 대해 순서대로 상세히 기록해놓은 사이트

https://medium.com/@hamedmp/exporting-trained-tensorflow-models-to-c-the-right-way-cf24b609d183


- 간단 예제로 구현해놓음.. 

https://gist.github.com/omimo/5d393ed5b64d2ca0c591e4da04af6009


순서


1. tensorflow model 생성

2. session 생성 및 checkpoint 저장

saver = tf.train.Saver()
saver.save(sess, 'model.ckpt')

3. graph 저장( pb 또는 pbtxt)

tf.train.write_graph(sess.graph.as_graph_def(), "", "graph.pbtxt")

4. freeze_graph 사용해서 freeze( contant화) 및 weight 병합

python freeze_graph.py
  --input_graph graph.pbtxt
  --input_checkpoint model.ckpt
  --output_graph frozen_graph.pb
  --output_node_names "name_of_output_op_here"

5. optimize inference

python optimize_for_inference.py
  --input frozen_graph.pb
  --output final_network.pb
  --frozen_graph True
  --input_names "name_of_input_op_here"
  --output_names "name_of_output_op_here"

----------------





'프로그래밍 > Tensorflow' 카테고리의 다른 글

Tensorflow Export(Protocol buff) + OpenCV Load(dnn)  (0) 2018.06.11
OpenCV +Tensorflow  (0) 2018.06.11
OpenCV + Tensorflow + PB  (0) 2018.06.08
Tensorflow C++ build  (0) 2018.06.04
Tensor 및 훈련 변수 접근하기  (0) 2018.05.28