Help us understand the problem. What is going on with this article?

coremltools 3.1の環境構築(2019年11月版)

Kerasでつくった自作モデルを環境構築したばかりのcoremltoolsで変換しようとするとエラーに次ぐエラーで前進しているのか後退しているのかさえわからない状態になったので、まずはcoremltoolsリポジトリにあるexamplesが実行できるよう環境構築をやり直したメモ。

https://github.com/apple/coremltools

ちなみに2019.11.4現在でcoremltoolsの最新リリースは3.1

https://github.com/apple/coremltools/releases

README通りに環境構築(結果的にはNG)

前提:仮想環境を利用。筆者は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を起動して、

https://github.com/apple/coremltools/blob/master/examples/updatable_models/updatable_mnist.ipynb

を順番に実行していく。

OperatorNotAllowedInGraphError: using a tf.Tensor as a Python bool 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もサポートしてそうに読めたのだが素人なので素直にメッセージに従って環境構築しなおすことにする。

環境構築やり直し(成功)

仮想環境のPythonバージョンは先程と同様に3.7coremltoolsのインストールも同じ。

$ 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」の欄が追加されていることがわかる。

Screen Shot 2019-11-04 at 13.26.33.png

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away