美文网首页
Core ML API - MLModel(2)

Core ML API - MLModel(2)

作者: _蓝星 | 来源:发表于2019-06-20 16:42 被阅读0次

七、预测输出值

7.1 接口方法

方法一:prediction(from:)

7.1.1 作用

根据给定的输入要素值预测输出要素值。

7.1.2 声明

func prediction(from input: MLFeatureProvider) throws -> MLFeatureProvider

7.1.3 参数

input : 模型预测所需要的所有要素值。

7.1.4 返回值

一个表示模型预测的要素提供程序。
MLFeatureProvider : 表示模型输入或输出值集合的接口。

方法二:prediction(from:options:)

7.2.1 作用

根据给定的输入要素值预测输出要素值。

7.2.2 声明

func prediction(from input: MLFeatureProvider, options: MLPredictionOptions) throws -> MLFeatureProvider

7.2.3 参数

input : 模型预测所需要的所有要素值。
option : 用于预测的所有选项。

7.2.4 返回值

一个表示模型预测的要素提供程序。

方法三:predictions(from:options:)

7.3.1 作用

根据给定的一批输入要素值预测输出要素值。

7.3.2 声明

func predictions(from inputBatch: MLBatchProvider, options: MLPredictionOptions) throws -> MLBatchProvider

7.3.3 参数

inputBatch : 模型进行预测所需要的一批要素值。
options : 用于预测的所有选项。

7.3.4 返回值

一个批处理提供程序,表示模型对该批输入的预测。
MLBatchProvider : 表示要素提供程序集合的接口。

7.4 MLFeatureProvider

表示模型输入或输出值集合的接口。

7.4.1 声明

protocol MLFeatureProvider

7.4.2 概述

在模型动态生成的接口不能够满足您的应用的需求时,可以使用MLFeatureProvider自定义方法来从您的模型获取数据。
如果符合下列任何条件,请考虑在数据源上采用该协议。

  • 您的数据是异步收集的。
  • 使用自动生成的接口会导致拷贝过多数据。
  • 您的数据非常复杂。
    该接口主要是MLFeatureValue实例的访问器,因此易于实现。采用这个协议可以直接将数据和MLModel集成在一起,这意味着模型可以查询数据源而不必构建单独的输入实例。
    自定义应用程序和模型的交互:
  1. 在类或者结构体中采用MLFeatureProvider协议,以便模型能够查询通过featureValue(for:)输入要素值。
  2. 使用prediction(form:)或者prediction(form:options:)将应用程序的MLFeatureProvider传递给您的MlModel。
  3. 使用从prediction(from:)方法返回的MLFeatureProvider来获取该预测的输出要素值。

7.4.3 featureValue(for:)

根据给定的要素名称访问要素值。

7.4.3.1 声明

func featureValue(for featureName: String) -> MLFeatureValue?

7.4.3.2 参数

featureName : 所需要素值的名称。

7.4.3.3 返回值

MLFeatureValue? : 要素值,如果该要素名称没有值则为nil

7.4.4 featureNames

一组有效的特征名称。

var featureNames: Set<String> { get }

7.5 MLBatchProvider

表示特征提供程序集合的接口。

7.5.1 声明

protocol MLBatchProvider

7.5.2 概述

和MLFeatureProvider相同,这个接口允许您定义您自己的批量处理供应程序。如果您的数据是异步收集或者是内存密集型,在您的数据结构上实现这个协议,从而使用批量处理来优化性能。

7.5.3 方法

7.5.3.1 features(at:)

返回给定下标的特征值。

func features(at index: Int) -> MLFeatureProvider

index : 所需 feature provider 的下标。
return value : 给定下标的feature provider

7.5.3.2 var count: Int

这批feature provider的数目。

var count: Int { get }

7.6 MLPredictionOptions

作出预测时可用的选项。

Language SDKs Framework
Swift
Objective-C
iOS 11.0+
macOS 10.13+
tvOS 11.0+
watchOS 4.0+
Core ML
class MLPredictionOptions : NSObject

7.6.1 usesCPUOnly

一个Boolean类型的值,指的是是否仅用CPU计算预测。

var usesCPUOnly: Bool { get set }

如果您的模型可能运行在后台或者如果您的app有其他的GPU密集型任务,那么该模型需要被限制仅使用CPU。

八、检测模型

8.1 configuration

初始化过程中设置的模型的配置。

var configuration: MLModelConfiguration { get }

8.2 modelDescription

有关此模型的信息(打算在开发期间使用),也显示在模型的Xcode视图中。

var modelDescription: MLModelDescription { get }

8.3 MLModelDescription

关于模型的信息,主要是每个特性的预期输入和输出格式,以及可选的元数据。

class MLModelDescription : NSObject

8.3.1 访问特性描述

8.3.1.1 inputDescriptionsByName

此模型的各种输入特性的描述,以每个特性的名称作为key。

var inputDescriptionsByName: [String : MLFeatureDescription] { get }

8.3.1.2 outputDescriptionsByName

此模型的各种输出特性的描述,以每个特性的名称作为key。

var outputDescriptionsByName: [String : MLFeatureDescription] { get }

8.3.1.3 MLFeatureDescription

输入、输出特性的名称、类型和约束。

class MLFeatureDescription : NSObject

在Core ML中,一个feature是一个单独的输入或者输出模型。一个模型可以拥有任意数量的输入feature或输出feature。每一个feature有一个名称和一个数值类型,被定义在feature的MLFeatureDescription中。模型的创造者使用feature descriptions来帮助开发者正确的集成他们的模型。每一个MLFeatureDescription实例都拥有只读属性,这些属性表示feature的名称,类型以及是否可选。
关于features的例子,参阅Integrating a Core ML Model into Your App。请注意名为solarPanels,greenhouses和size的三个输入features,而输出feature的名称为price。四个feature的类型都是Double类型。
MLFeatureDescription也可能包含约束,这些约束指定了模型的输入输出特性的限制。对于每一个输入feature,约束描述了那些值是模型需要从您的应用程序中获得的。对于每一个输出feature,约束描述了那些值是您的应用程序希望从模型中获得的。您还可以在应用程序中使用模型之前编写代码来检查这些描述。

8.3.1.3.1 检查Feature

(1)name :这个feature的名称。

var name: String { get }

(2)type :这个feature的类型

var type: MLFeatureType { get }

(3)MLFeatureType :feature值,输入feature和输出feature的可能类型。

MLFeatureType {
MLFeatureType.int64
MLFeatureType.double
MLFeatureType.image
MLFeatureType.multiArray
MLFeatureType.string
MLFeatureType.dictionary
MLFeatureType.sequence
MLFeatureType.invalid
}

(4)isOptional :表示feature是否是可选的一个Boolean值。

var isOptional: Bool { get }
8.3.1.3.2 检查有效性

isAllowedValue(_:) :检查模型是否接受输入的feature值。

func isAllowedValue(_ value: MLFeatureValue) -> Bool

参数
value:给定MLFeatureValue,它是否与这个MLFeatureDescription的MLFeatureType兼容。
返回值
return value:如果给定的MLFeatureValue可被模型的输入特性接受,则为True,否则为false。

8.3.1.3.3 访问Feature约束

(1)imageConstraint :图像特征的大小和格式约束。

var imageConstraint: MLImageConstraint? { get }

(2)MLImageConstraint
图像特征的宽度、高度和像素格式约束。

class MLImageConstraint : NSObject

(3)var dictionaryConstraint: MLDictionaryConstraint?
字典特性的约束。
(4)class MLDictionaryConstraint
字典特性键上的约束。
(5)var multiArrayConstraint: MLMultiArrayConstraint?
多维数组特性的约束。
(6)class MLMultiArrayConstraint
多维数组特性的形状和数据类型约束。
(7)var sequenceConstraint: MLSequenceConstraint?
序列特性的约束。
(8)class MLSequenceConstraint
序列特性的约束。

8.3.2 访问元数据

8.3.2.1 metadata

var metadata: [MLModelMetadataKey : Any] { get }

元数据对象有与模型有相关的信息,由MLModelMetadataKey中的keys定义。

8.3.2.2 MLModelMetadataKey

模型使用的元数据字典的Keys。
struct MLModelMetadataKey
Metadata Keys:

static let author: MLModelMetadataKey
Key for the author of the model.
static let description: MLModelMetadataKey
Key for the overall description of the model.
static let license: MLModelMetadataKey
Key for the license of the model.
static let versionString: MLModelMetadataKey
Key for the version of the model.
static let creatorDefinedKey: MLModelMetadataKey
Key for the model creator’s custom metadata.

Creating Metadata:

init(rawValue: String)

8.3.3 访问预测名称

8.3.3.1 predictedFeatureName

要预测值的名称。

var predictedFeatureName: String? { get }

8.3.3.2 predictedProbabilitiesName

预测概率的名称。

var predictedProbabilitiesName: String? { get }

相关文章

网友评论

      本文标题:Core ML API - MLModel(2)

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