本文主要講述CoreML的一次全流程實(shí)踐株憾。
Core ML模型支持很多第三方機(jī)器學(xué)習(xí)工具創(chuàng)建和訓(xùn)練的模型的轉(zhuǎn)換践美,比如Caffe, Keras, scikit-learn, XGBoost等拟逮。利用上述工具創(chuàng)建和訓(xùn)練的模型可以通過Core ML Tools工具將模型轉(zhuǎn)換為Core ML模型的格式矫废。目前Core ML Tools不支持3.x版本的python有勾,可以自己用虛擬環(huán)境裝一個(gè)2.7版本的python修肠。然后利用pip工具安裝coremltools和numpy等框架。
本文主要分為一下幾個(gè)部分
1.建立一個(gè)scikit-learn線性模型
2.轉(zhuǎn)化成CoreML模型
3.使用CoreML進(jìn)行預(yù)測(cè)
1.建立一個(gè)scikit-learn線性模型
用sublime或者其他編輯器建立一個(gè)python腳本恕出。利用numpy框架建立一個(gè)隨機(jī)數(shù)集询枚。
import numpy as np
x_values = np.linspace(-2.25,2.25,300)
y_values = np.array([np.sin(x) + np.random.randn()*.25 for x in x_values])
然后利用線性回歸模型來(lái)訓(xùn)練模型。
from sklearn.linear_model import LinearRegression
lm = LinearRegression().fit(x_values.reshape(-1,1), y_values)
2.轉(zhuǎn)化成CoreML模型
Core ML除了支持線性模型外浙巫,還支持許多機(jī)器學(xué)習(xí)模型金蜀,比如神經(jīng)網(wǎng)絡(luò)模型,基于樹的模型等的畴。Core ML模型的格式是以.mlmodel 結(jié)尾渊抄。首先進(jìn)行模型轉(zhuǎn)換,然后導(dǎo)入作者信息丧裁,還有其他元數(shù)據(jù)等护桦,最后保存轉(zhuǎn)換后的模型。
from coremltools.converters import sklearn
coreml_model = sklearn.convert(lm)
coreml_model.author = "WJ"
print(coreml_model.author)
coreml_model.short_description = "I approximate a sine curve with a linear model!"
coreml_model.input_description["input"] = "a real number"
coreml_model.output_description["prediction"] = "a real number"
print(coreml_model.short_description)
coreml_model.save('linear_model.mlmodel')
3.使用CoreML進(jìn)行預(yù)測(cè)
新建一個(gè)xcode工程煎娇,直接拖入剛才訓(xùn)練好的linear_model.mlmodel二庵。點(diǎn)擊這個(gè)模型贪染,可以看到一些模型信息。
然后點(diǎn)開Model Class中的箭頭催享,可以看到模型暴露的方法抑进。linear_modelInput和linear_modelOutput類一個(gè)表示輸入類,一個(gè)表示輸出類睡陪。linear_model是一個(gè)用來(lái)預(yù)測(cè)的類。
然后拖入一個(gè)輸入的textfield和輸出的textfield用來(lái)顯示匿情,再監(jiān)聽輸入的值兰迫,來(lái)預(yù)測(cè)輸出的值。
參考文獻(xiàn):
1.Leverage Scikit-Learn Models with Core ML
2.Core ML and Vision: Machine Learning in iOS 11 Tutorial
3.詳解蘋果Core ML:如何為iOS創(chuàng)建機(jī)器學(xué)習(xí)應(yīng)用
4.Build more intelligent apps with machine learning.
5.Core ML
6.Converting Trained Models to Core ML