Python API는 quantization 옵션을 제공한다. 양자화는 float32로 학습된 weight값들을 단순화 시키는 작업을 말한다.
이 작업을 하게되면 .tflite이 파일크기가 대략 4분의 1정도로 줄어들게 된다.
float32로 학습된 weight값을 float16, int8등의 형태로 변환하는것이다.
이렇게 변환하게 되면 대부분 세밀한 데이터값을 버리는 작업이므로 전체적으로 보게되면 model의 정확도를 잃어버리는 작업이된다. 이렇게 됨으로써 작은 model 사이즈를 얻게 된다.
결과적으로 quantization은 model의 사이즈를 줄여 정확도가 떨어지는 대신에 빠른 추론 시간을 언게 된다고 볼수있다.
import tensorflow as tf
from tensorflow import keras
import numpy as np
converter = tf.lite.TFLiteConverter.from_saved_model('~~~~~~')
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.target_spec.supported_types = [tf.float16]
tflite_quant_model = converter.convert()
open("######.tflite", "wb").write(tflite_quant_model)
converter = tf.lite.TFLiteConverter.from_saved_model('~~~~~~')
→ ~~~~~~에는 .pb파일이 저장된 directory명을 적는다.
open("######.tflite", "wb").write(tflite_quant_model)
→ ######에는 quantization된 tflite파일의 이름을 적는다.
참고: www.tensorflow.org/lite/performance/post_training_quantization#full_integer_quantization
출처: devinlife.com/tensorflow%20lite/tflite-converter/
github.com/devinlife/my-tf-training/blob/master/032-convert-tflite.py
ⓐ OFL
bugloss-chestnut.tistory.com/entry/Font-%EC%9D%BD%EC%9D%84-%EA%B1%B0%EB%A6%AC
ⓑ 신경망
[Keras & Tensorflow & Android] Keras Model을 Android에 넣기 (0) | 2020.08.29 |
---|---|
[Android] .db파일 Android App에 넣기(JAVA) (0) | 2020.08.29 |
[Tensorflow & keras] .h5 -> .pb -> .tflite 변환 오류(python) (0) | 2020.08.28 |
[Android] imageView 사진 회전 현상 해결하기 & 사진의 절대경로명 찾기(JAVA) (4) | 2020.08.22 |
[Firebase + Android + Tensorflow] tflite모델을 이용해 Camera로 찍은 사진을 분류, Firebase Cloud Storage에 Upload하기(JAVA) (2) | 2020.08.14 |