나는이 주변에 더 좋은 문서를 일하고 있어요,하지만 지금 여기에 도움이 될 수 있습니다 내 현재 초안에서 발췌 : 당신에게이 들어있는 폴더를 줄 것이다 TensorFlow와 모델을 훈련, 대부분의 상황에서
을 GraphDef 파일 (대개 .pb 또는 .pbtxt 확장자로 끝남) 및 검사 점 파일 집합. 모바일 또는 임베디드 배포에 필요한 것은 하나의 GraphDef 파일로 '고정'되었거나 변수가 인라인 상수로 변환되어 하나의 파일에 모두 들어 있습니다. 변환을 처리하려면 freeze_graph.py 스크립트가 필요합니다.이 스크립트는 tensorflow/pythons/tools/freeze_graph.py에 있습니다. 이처럼 실행하겠습니다 다음 input_graph
인수가 모델 아키텍처를 보유하고있는 GraphDef 파일을 가리켜 야합니다
bazel build tensorflow/tools:freeze_graph
bazel-bin/tensorflow/tools/freeze_graph \
--input_graph=/tmp/model/my_graph.pb \ --input_checkpoint=/tmp/model/model.ckpt-1000 \ --output_graph=/tmp/frozen_graph.pb \
--input_node_names=input_node \
--output_node_names=output_node \
. GraphDef가 디스크의 텍스트 형식으로 저장되어있을 가능성이 있습니다.이 경우 '.pb'대신 '.pbtxt'로 끝나기 쉽고 여분의 --input_binary=false
플래그를 명령에 추가해야합니다.
input_checkpoint
은 가장 최근 저장된 검사 점이어야합니다. 체크 포인트 섹션에서 언급했듯이 전체 파일 이름이 아닌 여기에있는 체크 포인트 세트에 공통 접두사를 제공해야합니다.
output_graph
은 고정 된 GraphDef가 저장되는 위치를 정의합니다. 텍스트 형식으로 많은 양의 공간을 차지하는 많은 가중치 값을 포함 할 가능성이 높기 때문에 항상 이진 파일로 저장됩니다. output_node_names
은 그래프의 결과를 추출 할 노드의 이름 목록입니다. 이는 동결 프로세스가 그래프의 어느 부분이 실제로 필요한지, 그리고 요약 작업과 같은 교육 과정의 산출물을 이해해야하기 때문에 필요합니다. 주어진 출력 노드를 계산하는 데 기여하는 작업 만 유지됩니다. 그래프가 어떻게 사용되는지 알고 있다면, 이것들은 가져 오기 대상으로 Session :: Run()에 전달한 노드의 이름이어야합니다. 이 정보가 도움이되지 않으면 summarize_graph
도구를 실행하여 예상되는 결과에 대한 제안을 얻을 수 있습니다.
TensorFlow의 출력 형식이 시간이 지남에 따라 변경 되었기 때문에 input_saver
과 같이 많이 사용되지 않는 다른 자주 사용되는 플래그도 있지만 최신 버전의 프레임 워크로 학습 한 그래프에는 이러한 플래그가 필요하지 않기를 바랍니다.
답변 해 주셔서 감사합니다. 너무 많은 것들을 시도한 후에, 나는 이미 내 고정 그래프를 가지고있다. 이제 내 안드로이드 응용 프로그램에 사용하고 싶습니다. 현재이 문제가 있습니다 (https://stackoverflow.com/questions/46577833/using-bi-lstm-ctc-tensorflow-model-in-android). –