tensorflow 모델 압축 문제 해결_구덩이를 무수히 밟아서 마침내 해결되었다
2641 단어 tensorflow모델압축
2. GitHub에서 최신 TensorFlow 소스 다운로드
3. TensorFlow 소스 폴더로 들어가 명령을 입력합니다.
bazel build tensorflow/tools/graph_transforms:transform_graph
이곳은 각종 구덩이를 만날 수 있다. 예를 들면ERROR:/opt/tf/tensorflow-master/tensorflow/core/kernels/BUILD:3044:1: C++ compilation of rule ‘//tensorflow/core/kernels:matrix_square_root_op' failed (Exit 4)
gcc: internal compiler error: Killed (program cc1plus)
이 오류는 cpu 부하가 너무 커서 행 코드가 필요합니다
# swap
sudo dd if=/dev/zero of=/mnt/512Mb.swap bs=1M count=512
#
sudo mkswap /mnt/512Mb.swap
#
sudo swapon /mnt/512Mb.swap
아니면 이 @aws Error downloading내가 보기에 csdn에 있는 블로거 해결 방법은 임시 폴더에서 파일을 삭제하고 다시 다운로드하는 것이다. 그러나 나는 이쪽에서 쓸모가 없다는 것을 발견했다. 이쪽의 해결 방법은bazel을 실행하기 전에 명령을 입력하는 것이다.
sed -i '\@https://github.com/aws/aws-sdk-cpp/archive/1.5.8.tar.gz@aws' tensorflow/workspace.bzl
명령의 사이트 주소는 실제 다운로드할 파일의 주소입니다. 어떤 주소는 바뀔 수 있기 때문입니다여기 와서 bazel을 컴파일하면 완성됩니다.
4. 컴파일하면 모형이 압축되고 코드도 한 줄, in_graph 는 입력 모델 경로, outputs 부동, out_graph는 출력 모델 경로,transforms는quantize_weights면 됩니다. 이것은 32bit를 8bit로 바꾸는 것이고 이 방법이 가장 효과적인 단계입니다.내가 보기에 어떤 블로거들은 Summary를 먼저 컴파일한 다음에 입력과 출력의 결점을 인쇄한 다음에 파라미터를 한 무더기 입력하고 결점 따위를 삭제한다. 나는 이쪽에서 모두 시험해 보았지만 최종적으로 모델의 크기를 더 줄이지 않았기 때문에 이렇게 하면 된다.
bazel-bin/tensorflow/tools/graph_transforms/transform_graph --in_graph=../model/ctpn.pb --outputs='output_node_name' --out_graph=../model/quantized_ctpn.pb --transforms='quantize_weights'
최종적으로 68m에서 17m, 75%의 축소 비율로 축소되었는데 실측 효과는 기본적으로 별 차이가 없고 이 방법은 그래도 매우 유용하다.보충: 모델 압축 1, 2, 3의tensorflowckpt모델의 매개 변수와 수치 보기
ckpt 모델 매개 변수와 수치 보기
import os
from tensorflow.python import pywrap_tensorflow
checkpoint_path = os.path.join("< >", "./model.ckpt-11000")
# Read data from checkpoint file
reader = pywrap_tensorflow.NewCheckpointReader(checkpoint_path)
var_to_shape_map = reader.get_variable_to_shape_map()
# Print tensor name and values
for key in var_to_shape_map:
print("tensor_name: ", key)
print(reader.get_tensor(key))
참고:
1,'<당신의 모델 디렉터리>'는 당신의 메타, ckpt 이 모델들이 저장된 경로를 가리킨다.
예를 들어 경로/모델/모델.ckpt-11000.meta'이런, 그러면'<당신의 모델 디렉터리>'바로'/models'
2. 디렉터리에 여러 개의 ckpt가 있을 때 최신 모델 이름을 ckpt-<최대 숫자>로 지으면 됩니다. 뒤에 사용하지 않습니다.
이상의 개인적인 경험으로 여러분께 참고가 되었으면 좋겠습니다. 또한 많은 응원 부탁드립니다.만약 잘못이 있거나 완전한 부분을 고려하지 않으신다면 아낌없이 가르침을 주시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
GPU가 있는 M1 MacBook Air에 TensorFlow 설치(메탈)이제 TensorFlow v2.5에서 Apple의 tensorflow-metal PluggableDevice를 활용하여 Metal을 사용하여 Mac GPU에서 직접 가속화된 교육을 받을 수 있습니다. 자세히 알아보기...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.