相关文章推荐

受惠於深度學習框架的多元性,開發者可以選自己喜歡的框架,
像是: 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 做比較)
    https://ithelp.ithome.com.tw/upload/images/20210927/20141294EbsKjcZX8e.jpg

    讓模型輕量化, 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手機/images/emoticon/emoticon02.gif
    未完待續...

  •  
    推荐文章