M1 MacでTensorflowLiteによるKerasモデルの圧縮
- 2022.09.30
- IT
今回は、h5形式で保存したモデルをtfliteで保存する方法を紹介します。
このQiitaのTensorflowLiteによるKerasモデルの圧縮 という記事を参考にしました。
私の環境ではライブラリが更新されて動かなかったので、動くようにしました。
利用環境
利用環境は、M1 Macです。
1 2 3 4 5 6 7 8 9 10 |
test@tests-Air ~ % sw_vers ProductName: macOS ProductVersion: 12.3.1 BuildVersion: 21E258 test@tests-Air ~ % sysctl machdep.cpu.brand_string machdep.cpu.brand_string: Apple M1 test@tests-Air ~ % python -V Python 3.9.10 test@tests-Air ~ % pip -V pip 22.0.4 |
Pythonのライブラリは下記です。不要なものがたくさん入っていますが、Tensorflow周りのバージョンは参考になると思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
Package Version ----------------------- ------------------- absl-py 1.0.0 alembic 1.8.1 appnope 0.1.3 argon2-cffi 21.3.0 argon2-cffi-bindings 21.2.0 asttokens 2.0.5 astunparse 1.6.3 attrs 21.4.0 backcall 0.2.0 bcrypt 3.2.2 beautifulsoup4 4.11.1 bleach 5.0.0 cachetools 5.0.0 certifi 2021.10.8 cffi 1.15.0 charset-normalizer 2.0.12 click 8.1.3 cloudpickle 2.2.0 cycler 0.11.0 Cython 0.29.32 dask 2022.9.0 debugpy 1.6.0 decorator 5.1.1 defusedxml 0.7.1 Deprecated 1.2.13 dlib 19.23.0 dnspython 2.2.1 dominate 2.7.0 email-validator 1.1.1 entrypoints 0.4 et-xmlfile 1.1.0 executing 0.8.3 fastjsonschema 2.15.3 Flask 1.1.1 Flask-Bcrypt 0.7.1 Flask-Bootstrap 3.3.7.1 Flask-Login 0.5.0 Flask-Migrate 2.5.3 Flask-SQLAlchemy 2.4.3 flatbuffers 2.0 fonttools 4.32.0 fsspec 2022.8.2 gast 0.4.0 google-auth 2.6.4 google-auth-oauthlib 0.4.6 google-pasta 0.2.0 grpcio 1.44.0 h5py 3.6.0 idna 3.3 importlib-metadata 4.11.3 ipykernel 6.13.0 ipython 8.2.0 ipython-genutils 0.2.0 ipywidgets 7.7.0 itsdangerous 2.0.1 jaconv 0.3 jedi 0.18.1 Jinja2 3.0.3 joblib 1.1.0 jsonschema 4.4.0 jupyter 1.0.0 jupyter-client 7.2.2 jupyter-console 6.4.3 jupyter-core 4.9.2 jupyterlab-pygments 0.2.2 jupyterlab-widgets 1.1.0 keras 2.10.0 Keras-Preprocessing 1.1.2 kiwisolver 1.4.2 libclang 13.0.0 locket 1.0.0 Mako 1.2.1 Markdown 3.3.6 MarkupSafe 2.1.1 matplotlib 3.5.1 matplotlib-inline 0.1.3 mistune 0.8.4 nbclient 0.6.0 nbconvert 6.5.0 nbformat 5.3.0 nest-asyncio 1.5.5 notebook 6.4.10 numpy 1.23.3 oauthlib 3.2.0 opencv-python 4.5.5.62 openpyxl 3.0.9 opt-einsum 3.3.0 packaging 21.3 pandas 1.4.2 pandocfilters 1.5.0 parso 0.8.3 partd 1.3.0 pexpect 4.8.0 pickleshare 0.7.5 Pillow 9.1.0 pip 22.0.3 prometheus-client 0.14.1 prompt-toolkit 3.0.29 protobuf 3.19.6 psutil 5.9.0 ptyprocess 0.7.0 pure-eval 0.2.2 pyasn1 0.4.8 pyasn1-modules 0.2.8 pycparser 2.21 Pygments 2.11.2 pykakasi 2.2.1 pyparsing 3.0.8 pyrsistent 0.18.1 python-dateutil 2.8.2 pytz 2022.1 PyYAML 6.0 pyzmq 22.3.0 qtconsole 5.3.0 QtPy 2.0.1 requests 2.27.1 requests-oauthlib 1.3.1 rsa 4.8 scikit-learn 1.0.2 scipy 1.8.0 Send2Trash 1.8.0 setuptools 60.5.0 six 1.15.0 sklearn 0.0 soupsieve 2.3.2.post1 SQLAlchemy 1.4.40 stack-data 0.2.0 tensorboard 2.10.1 tensorboard-data-server 0.6.1 tensorboard-plugin-wit 1.8.1 tensorflow 1.0.0 tensorflow-estimator 2.10.0 tensorflow-macos 2.10.0 tensorflow-metal 0.6.0 termcolor 1.1.0 terminado 0.13.3 tf-estimator-nightly 2.8.0.dev2021122109 threadpoolctl 3.1.0 tinycss2 1.1.1 toolz 0.12.0 tornado 6.1 traitlets 5.1.1 typing_extensions 4.1.1 urllib3 1.26.9 visitor 0.1.3 wcwidth 0.2.5 webencodings 0.5.1 Werkzeug 2.0.0 wheel 0.37.1 widgetsnbextension 3.6.0 wrapt 1.14.0 WTForms 2.3.1 |
コード
下記がコードです。難しいことも特にないですが…。
1 2 3 4 5 6 7 8 9 10 |
import tensorflow as tf import keras model = keras.models.load_model("./YOUR_MODEL.h5") converter = tf.lite.TFLiteConverter.from_keras_model(model) tflite_model = converter.convert() with open("OUTPUT-MODEL.tflite", "wb") as f: f.write(tflite_model) |
補足
読み込むモデルは、
model.save()で保存したものであり、model.save_weights()で保存したものではNGです。
オプションなどは公式ドキュメントが参考になります。
以上です。