受惠於深度學習框架的多元性,開發者可以選自己喜歡的框架,
像是: Theano、Caffe、ONNX、Keras、Tensorflow、Pytorch、DL Spark、Paddle...
光是最知名的兩大套件就有令人眼花撩亂的模型儲存格式,
Tensorflow有
.h5
、
.hdf5
、
.ckpt
、
.pb
Pytorch有
.pt
、
.pth
、
.pkl
手機適合用什麼副檔名的儲存方式?
當然是
.tflite
!
Google在2017年推出針對手機端的神經網絡計算框架TensorFlow Lite。
所以TFLite有那些優點呢?
通過 TFLite 生成的依賴庫體積很小 (在寸土寸金的手機儲存空間這很重要)
支援手機端硬體加速
TFLite 可以運行在 Android 和 iOS 上
模型本身比較小
(相同的EfficientNetB0模型,用.h5和.tflite 做比較)
讓模型輕量化,
model quantization
是一個很簡單的方法,
原理是將參weghts的儲存位元數下降。
例如: 把 float32 映射到 int8
那要如何獲得.tflite的模型呢?
我們過去二十天來都是用tf.keras在訓練模型,
tf.keras的Model class可以用
TFLiteConverter
轉成.tflite。
程式碼如下:
def save_model(model, save_name="mymodel"):
model : Keras Model class
save_name : str
# 儲存模型-tf格式
# Convert the model.
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
# Save the model.
with open("./" + save_name + ".tflite", 'wb') as f:
f.write(tflite_model)
# 儲存模型-keras格式
model.save("./" + save_name + ".h5")
儲存模型只是應用深度學習的第一步,
我們獲得輕量化的模型就是為了能夠把模型部署在邊緣裝置上,
但我只有Android手機
未完待續...