開発環境
- macOS 10.13
- Swift4
- XCode9
- Python2.7
coremltoolsをインストールする
と思ったらpipがデフォルトでは無いので、インストールする必要がありました。
coremltoolsを使用する
Appleの用意しているドキュメントにやり方が載っています。
coremltools.converters.libsvm.convert
Examples
がうまく動きませんでしたー。why?
# Make a LIBSVM model
>>> import svmutil
>>> problem = svmutil.svm_problem([0,0,1,1], [[0,1], [1,1], [8,9], [7,7]])
>>> libsvm_model = svmutil.svm_train(problem, svmutil.svm_parameter())
# Convert using default input and output names
>>> import coremltools
>>> coreml_model = coremltools.converters.libsvm.convert(libsvm_model)
最初の行から躓くので、凹む。libsvmへのパスが通ってるなら
from libsvm import svmutil
通ってないなら、パスを指定
>>> import sys
>>> sys.path.append('/Library/Python/2.7/site-packages/libsvm/')
あと、最後の行でインスタンスの型が違うエラーになります。ちと理由は現在不明。知識が足りない。
回避方法として、一旦、ファイルに落として、それを呼び出してやるとうまくいきます。
>>> svmutil.svm_save_model('test.model', libsvm_model)
>>> import coremltools
>>> coreml_model = coremltools.converters.libsvm.convert('./test.model')
[WARNING] Infering an input lenght of 2. If this is not correct, use the 'input_length' parameter.
input_lengthの数が正しく無い場合は、引数で正確な数を指定しろよとの事。
というわけで、1で作ったmodelを変換します。
>>> coreml_model = coremltools.converters.libsvm.convert('./train.model' input_length=784)
>>> coreml_model.save('./my_model.mlmodel')
これで準備完了。後は簡単なペイントアプリを作成する。
のはまた後日。