tensor flow--freeze 사용graph.py 는 ckpt 를 pb 파일 로 변환 합 니 다.

5832 단어 tensorflow
잔말 말고 코드 에 직접 올 리 세 요.
import tensorflow as tf
import os
from tensorflow.python.tools import freeze_graph
#     model       ,             ,          
# network              
# ps:
# def network(input):
#    return tf.layers.max_pooling2d(input, 2, 2)
from model import network


os.environ['CUDA_VISIBLE_DEVICES']='2'  #  GPU


model_path  = "path to /model.ckpt-0000" #  model   ,   tensorflow       ,       


def main():

    tf.reset_default_graph()

    input_node = tf.placeholder(tf.float32, shape=(228, 304, 3)) #             ,             
    input_node = tf.expand_dims(input_node, 0)
    flow = network(input_node)
    flow = tf.cast(flow, tf.uint8, 'out') #               ,       pb     

    saver = tf.train.Saver()
    with tf.Session() as sess:

        saver.restore(sess, model_path)

        #   
        tf.train.write_graph(sess.graph_def, 'output_model/pb_model', 'model.pb')
        #         
        freeze_graph.freeze_graph('output_model/pb_model/model.pb', '', False, model_path, 'out','save/restore_all', 'save/Const:0', 'output_model/pb_model/frozen_model.pb', False, "")

    print("done")

if __name__ == '__main__':
    main()

이 절 은 tensor flow 의 Freezing 에 관 한 것 으로 냉동 이라는 뜻 으로 통합 합병 으로 이해 할 수 있다.무엇 을 통합 시 킬 것 인가?바로 모델 파일 과 가중치 파일 을 하나의 파일 로 통합 시 키 는 것 이다.주요 용 도 는 발표 하기에 편리 하 다 는 것 이다.공식 설명 은 참고 할 수 있다.https://www.tensorflow.org/extend/tool_developers/\#freezing 여 기 는 제 가 이해 하 는 대로 번역 하 겠 습 니 다.잘못된 부분 은 지적 해 주 십시오.조금 당 혹 스 러 운 것 은 tensor flow 가 훈련 과정 에서 가중치 데 이 터 를 저장 하 는 형식 파일 에 저장 하지 않 고 오히려 checkpoint 라 는 검사 점 파일 에 따로 저장 합 니 다.초기 화 할 때...모델 파일 의 변수 인 Op 노드 를 통 해 checkoupoint 파일 에서 데 이 터 를 읽 고 변 수 를 초기 화 합 니 다.이 모델 과 가중치 데 이 터 를 분리 하여 저장 하 는 경우 제품 을 발표 할 때 그다지 편리 하지 않 기 때문에 freeze 가 생 겼 습 니 다.graph.py 스 크 립 트 파일 은 이 두 파일 을 하나의 파일 로 통합 하 는 데 사 용 됩 니 다.freeze_graph.py 는 어떻게 하 는 거 죠?첫 번 째 줄 은 모델 파일 을 불 러 오고 checkpoint 파일 에서 가중치 데 이 터 를 읽 어 모델 의 가중치 변수 로 초기 화 한 다음 에 가중치 변 수 를 가중치 상수 로 변환 합 니 다(상수 가 모델 과 함께 같은 파일 에 저장 할 수 있 기 때 문 입 니 다).그 다음 에 지정 한 출력 노드 를 통 해 출력 추리 에 사용 되 지 않 은 Op 노드 를 그림 에서 분리 합 니 다.지정 한 파일 에 다시 저장(write 로graphdef 또는 Saver)
파일 디 렉 터 리:tensoflow/python/tools/freegraph.py 테스트 파일:tensoflow/python/tools/freegraph_test.py 이 테스트 파일 은 학습 가치 가 있 는 매개 변수 입 니 다.모두 11 개의 매개 변수 가 있 습 니 다.하나씩 소개 하 십시오(필수:값 이 있어 야 함 을 표시 합 니 다.선택 가능:비 워 도 됨):1,inputgraph:(필수)모델 파일,바 이 너 리 pb 파일 또는 텍스트 meta 파일 일 수 있 습 니 다.inputbinary 는 구분 을 지정 합 니 다(아래 설명 참조)2.inputsaver:(선택 가능)Saver 해상도 기.모델 과 권한 을 저장 할 때 Saver 는 불 러 올 때 적당 한 버 전 을 사용 할 수 있 도록 자체 직렬 로 저장 할 수 있 습 니 다.주로 버 전이 호 환 되 지 않 을 때 사용 합 니 다.비어 있 을 때 현재 버 전의 Saver 를 사용 할 수 있 습 니 다.3、input_binary:(선택 가능)배합 inputgraph 용,true 일 때 inputgraph 가 바 이 너 리,false 일 때 inputgraph 는 파일 입 니 다.기본 false 4,inputcheckpoint:(필수)데이터 파일 을 검사 합 니 다.훈련 시 Saver 에 가중치,편향 등 변 수 를 저장 하 는 데 사용 합 니 다.이 때 모델 복구 변수 값 에 사 용 됩 니 다.5、output_node_names:(필수)출력 노드 의 이름 입 니 다.여러 개 있 을 때 쉼표 로 구분 합 니 다.출력 노드 를 지정 할 때 출력 라인 에 없 는 다른 노드 를 제거 합 니 다.6、restore_op_name:(선택 가능)모델 에서 노드 의 이름 을 복원 합 니 다.업그레이드 버 전에 서 이미 폐기 되 었 습 니 다.기본 값:save/restoreall 7、filename_tensor_name:(선택 가능)버 렸 습 니 다.기본 값:save/const:0 8,outputgraph:(필수)통 합 된 모델 출력 파일 을 저장 합 니 다.9、clear_devices:(선택 가능),기본 True.훈련 할 때 노드 가 지정 한 연산 장치(예 를 들 어 cpu,gpu,tpu)를 제거 할 지 여 부 를 지정 합 니 다.cpu 는 기본 값)10,initializernodes:(선택 가능)기본 비어 있 습 니 다.권한 을 불 러 온 후 이 매개 변 수 를 통 해 초기 화 할 노드 를 지정 하고 여러 노드 의 이름 을 쉼표 로 구분 할 수 있 습 니 다.11、variable_names_blacklist:(먼저)기본적으로 비어 있 습 니 다.변수 블랙리스트,복구 값 을 사용 하지 않 는 변 수 를 지정 하고 여러 변수 이름 을 쉼표 로 구분 합 니 다.용법:예:python tensoflow/python/tools/freegraph.py \ –input_graph=some_graph_def.pb\메모:여기 pb 파일 은 tf.train.writegraph 방법 으로 저 장 된–inputcheckpoint=model.cppt.1001\\주의:여기 r12 이상 버 전이 라면.data-00000..........................................................graph=/tmp/frozen_graph.pb –output_node_names=softmax
또한 모델 파일 이.meta 형식 이 라면 saver.Save 방법 으로 checkpoint 와 함께 생 성 된 메타 모델 파일,freegraph.py 는 적용 되 지 않 지만 개조 가능:1,copy freegraph.py 는 freegraph_meta.py 2、free 수정graph.py,meta 가 져 오기graph:from tensorflow.python.framework import meta_graph 3、91 줄 에서 97 줄 로 바 꾸 기:inputgraph_def = meta_graph.read_meta_graph_file(input_graph).graph_def
이렇게 고치 면 meta 파일 을 불 러 올 수 있 습 니 다.

좋은 웹페이지 즐겨찾기