iOS11 新特性-Core ML (三) Core ML 实战

上篇中我们已经生成了一个 Core ML 模型文件:HousePricer.mlmodel,本篇将介绍如何将文件引入到项目中并调用相应的接口。

导入HousePricer.mlmodel到项目中

1.1 文件导入方式同一般文件导入,采用拖拽或者菜单导入,选中导入的文件,我们可以查看模型的元数据及输入,输出信息(图一)

图一

1.2 导入文件添加到编译资源

上一步中导入的文件是不会自动添加到编译资源列表中(图二),我们需要手动添加到编译资源中,否则无法调用接口

图二

此时,我们再次选中 模型文件,在元数据信息面板,我们可以看到 在 Model class 部分 多了一个 可以点击的 向右箭头(图三)

图三

点击 箭头,则进入 自动生成的 类文件 HousePricer.swift, 其中包含三个类:

HousePricerInput         输入参数

HousePricerOutput      输出参数

HousePricer                 用于预测接口的调用

接口调用

调用类中 生成 模型实例:

[objc]view plaincopy

...

let model = HousePricer()

...

模型预测接口调用:

模型中为我们生成了两个预测接口,代码如下:

[objc]view plaincopy

func prediction(input: HousePricerInput) throws -> HousePricerOutput {

let outFeatures =trymodel.prediction(from: input)

let result = HousePricerOutput(Price: outFeatures.featureValue(for:"Price")!.doubleValue)

returnresult

}

func prediction(Square_Feet: Double) throws -> HousePricerOutput {

let input_ = HousePricerInput(Square_Feet: Square_Feet)

returntryself.prediction(input: input_)

}

我们可以选择其中之一调用即可:

[objc]view plaincopy

let input = HousePricerInput(Square_Feet: size);

guard let marsHabitatPricerOutput =try? model.prediction(input:input)else{

fatalError("Unexpected runtime error.")

}

let price = marsHabitatPricerOutput.Price

是不是很简单,完整代码示例,请移步Github

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,314评论 19 139
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,803评论 0 9
  • 1.不可变数组转变为可变数组声明实例变量的数组 必须记得实现 对于遍历数组找到对象后 如果还需要查找 记得先结束 ...
    小新xin阅读 4,097评论 0 1
  • 今天是放暑假的第三天,因为离上托辅还有4天时间,所以作业我们先在家里进行,不能落下! 其实作业昨...
    夏雪_54bd阅读 1,079评论 0 2
  • 我是江雄英,我坚持记录最真实的自己,这是我的原创日记第59天,show计划第16天,我的每天越来越丰富。 一.祈福...
    阿英说阅读 2,607评论 0 0