美文网首页AI
CoreML实践

CoreML实践

作者: alvin_wang | 来源:发表于2017-08-09 17:06 被阅读132次

    本文主要讲述CoreML的一次全流程实践。
    Core ML模型支持很多第三方机器学习工具创建和训练的模型的转换,比如Caffe, Keras, scikit-learn, XGBoost等。利用上述工具创建和训练的模型可以通过Core ML Tools工具将模型转换为Core ML模型的格式。目前Core ML Tools不支持3.x版本的python,可以自己用虚拟环境装一个2.7版本的python。然后利用pip工具安装coremltools和numpy等框架。
    本文主要分为一下几个部分
    1.建立一个scikit-learn线性模型
    2.转化成CoreML模型
    3.使用CoreML进行预测

    1.建立一个scikit-learn线性模型

    用sublime或者其他编辑器建立一个python脚本。利用numpy框架建立一个随机数集。

    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]) 
    

    然后利用线性回归模型来训练模型。

    from sklearn.linear_model import LinearRegression  
    lm = LinearRegression().fit(x_values.reshape(-1,1), y_values) 
    

    2.转化成CoreML模型

    Core ML除了支持线性模型外,还支持许多机器学习模型,比如神经网络模型,基于树的模型等。Core ML模型的格式是以.mlmodel 结尾。首先进行模型转换,然后导入作者信息,还有其他元数据等,最后保存转换后的模型。

    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进行预测

    新建一个xcode工程,直接拖入刚才训练好的linear_model.mlmodel。点击这个模型,可以看到一些模型信息。

    image.png

    然后点开Model Class中的箭头,可以看到模型暴露的方法。linear_modelInput和linear_modelOutput类一个表示输入类,一个表示输出类。linear_model是一个用来预测的类。

    image.png

    然后拖入一个输入的textfield和输出的textfield用来显示,再监听输入的值,来预测输出的值。

    image.png

    参考文献:
    1.Leverage Scikit-Learn Models with Core ML
    2.Core ML and Vision: Machine Learning in iOS 11 Tutorial
    3.详解苹果Core ML:如何为iOS创建机器学习应用
    4.Build more intelligent apps with machine learning.
    5.Core ML
    6.Converting Trained Models to Core ML

    相关文章

      网友评论

        本文标题:CoreML实践

        本文链接:https://www.haomeiwen.com/subject/zwhqrxtx.html