- Tensorflow 에서 학습된 모델을 다른 언어 환경에서 Load해서 사용 가능하다
- Protocol Buffers( 일련의 데이터를 구조체저럼 저장) 로 파일을 저장(binary 확장명 .pb, text형태도 저장 가능(pbext
-> 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 |