coremltools 3.3の環境構築(2020年3月版)
Kerasでつくった自作モデルを環境構築したばかりのcoremltools
で変換しようとするとエラーに次ぐエラーで前進しているのか後退しているのかさえわからない状態になったので、まずはcoremltools
リポジトリにあるexamplesが実行できるよう環境構築をやり直したメモ。
ちなみに2020.3.1現在でcoremltoolsの最新リリースは3.3
。
README通りに環境構築(結果的にはNG)
(2020年3月追記:以下は3.1
の頃に書いた手順)
前提:仮想環境を利用。筆者はAnacondaを利用してPython 3.7の環境を用意した。
- coremltoolsをインストール
$ pip install -U coremltools
- KerasとTensorFlowをインストール
$ pip install keras tensorflow
- 確認
$ pip freeze
...
coremltools==3.1
...
h5py==2.10.0
...
Keras==2.3.1
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.0
...
tensorboard==2.0.1
tensorflow==2.0.0
tensorflow-estimator==2.0.1
...
- jupyterもインストール
$ conda install jupyter
公式exampleを試す
Jupyter Notebookを起動して、
を順番に実行していく。
OperatorNotAllowedInGraphError: using a
tf.Tensor
as a Pythonbool
is not allowed in Graph execution. Use Eager execution or decorate this function with @tf.function.
というエラーで止まるのだが、気になったのが以下のwarning。
WARNING:root:TensorFlow version 2.0.0 detected. Last version known to be fully compatible is 1.14.0 .
WARNING:root:Keras version 2.3.1 detected. Last version known to be fully compatible of Keras is 2.2.4 .
coremltools 3.1のリリースノートではTF 2.xもサポートしてそうに読めたのだが素人なので素直にメッセージに従って環境構築しなおすことにする。
環境構築やり直し(成功)
(2020年3月追記:以下は3.3
でも同様の手順で確認済み)
仮想環境のPythonバージョンは先程と同様に3.7
。coremltools
のインストールも同じ。
$ pip install -U coremltools
KerasとTFは、先程のwarningに書いてあったcompatibleなバージョンを指定してインストール。
$ pip install keras==2.2.4 tensorflow==1.14.0
jupyterもインストール(この手順はスキップできるかも)
$ conda install jupyter
Jupyter Notebookを起動して、先ほどと同様にUpdatableなMNISTモデルを生成する公式exampleを実行していくと・・・(FutureWarning
はたくさん出るものの)最後まで実行成功!🎉Updatableな手書き数字認識の.mlmodel
が生成される。
Xcode 11で.mlmodel
ファイルをプレビューすると、「Update」の欄が追加されていることがわかる。
Author And Source
この問題について(coremltools 3.3の環境構築(2020年3月版)), 我々は、より多くの情報をここで見つけました https://qiita.com/shu223/items/7679eaeea9c243c80c4d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .