美文网首页
Core ML - 模型特性

Core ML - 模型特性

作者: _蓝星 | 来源:发表于2019-07-18 11:49 被阅读0次

1.MLFeatureValue(Class)

特性的值及其类型绑定为只读实例。

1.1 概述

一个Core MLfeature value(由MLFeatureValue表示)封装有数据值和它的类型(由MLFeatureType表示)。对于每一个MLModel预测,每一个输入特性恰好接受一个MLFeatureValue并且每一个输出特性恰好产生一个MLFeatureValue。(查阅MLFeatureDescription 了解输入输出特性的详细内容)
但是,模型和您的应用不能直接传递MLFeatureValue实例。相反,您的应用使用一个MLFeatureProvider来给模型的输入特性传递MLFeatureValue实例,并且使用另一个MLFeatureProvider从模型的输出特性获取MLFeatureValue实例。
如果为Core ML模型使用动态生成的接口,则将使用特定于模型的模型输入和输出接口,而不是使用MLFeatureValue直接操作值。

1.2 创建具有特定类型的值

init(int64: Int64):将整数包装为该特性的值。
init(string: String):将字符串包装为特性的值。
init(dictionary: [AnyHashable : NSNumber]):将字典包装为特性的值。
init(pixelBuffer: VCPixelBuffer):将像素缓冲区包装为特性的值。
init(double: Double):将double包装为特性的值。
init(multiArray: MLMultiArray):将多维数组包装为特性的值。
init(sequence: MLSequence):将序列包装为特性的值。
init(undefined: MLFeatureType):用给定类型包装未定义的值。

1.3 创建图像特征值(beta)

(1)将图像包装为特征值,给定图像的宽度和高度(以像素为单位)。

convenience init(cgImage: CGImage, 
      pixelsWide: Int, 
      pixelsHigh: Int, 
 pixelFormatType: OSType, 
         options: [MLFeatureValue.ImageOption : Any]? = nil) throws

(2)给定图像及其约束,将图像包装为特性的值。

convenience init(cgImage: CGImage, 
      constraint: MLImageConstraint, 
         options: [MLFeatureValue.ImageOption : Any]? = nil) throws

(3)将图像包装为特性的值,给定图像的URL及其宽度和高度(以像素为单位)。

convenience init(imageAt url: URL, 
      pixelsWide: Int, 
      pixelsHigh: Int, 
 pixelFormatType: OSType, 
         options: [MLFeatureValue.ImageOption : Any]? = nil) throws

(4)给定图像的URL和约束,将图像包装为特性的值。

convenience init(imageAt url: URL, 
      constraint: MLImageConstraint, 
         options: [MLFeatureValue.ImageOption : Any]? = nil) throws

(5)当您创建图像特征值时,用于剪裁和缩放图像的初始化器选项。
MLFeatureValue.ImageOption
(6)图像特征的宽度、高度和像素格式约束。

class MLImageConstraint : NSObject
1.4 访问类型

var type: MLFeatureType:此特性值的类型。
enum MLFeatureType:特性值、输入特性和输出特性可能的类型。
MLFeatureType包括:int64、double、image、multiArray、string、dictionary、sequence、invalid。

1.5 访问值

var isUndefined: Bool:一个布尔值,指示特征值是否未定义。
var int64Value:此特征值中包装的整数。
var doubleValue:这个特性值中包含的double。
var stringValue:包含在此特性值中的字符串。
var dictionaryValue:包装在此特性值中的字典。
var imageBufferValue:将图像或pixelBuffer包装在此特性值中。
var multiArrayValue:包含在此特性值中的多维数组。
class MLMultiArray:一种多维数组,用作模型的特征输入或特征输出。
var sequenceValue:包含在此特性值中的序列。
class MLSequence:用于模型的特征输入或特征输出的数据序列。

1.5 比较特征值

func isEqual(to: MLFeatureValue) -> Bool:比较特性值及其类型。

2.MLFeatureProvider(Protocol)

一个接口,表示模型输入或输出值的集合。
protocol MLFeatureProvider

2.1 概述

当模型动态生成的接口不能满足应用程序的需要时,使用MLFeatureProvider自定义应用程序向模型获取数据的方法。
如果有下列任何一种需求,请考虑在数据源中采用此协议:

  • 数据是异步收集的。
  • 使用自动生成接口会导致拷贝过多数量的数据。
  • 您的数据源非常复杂。

该接口主要是MLFeatureValue实例的访问器,因此易于实现。采用此协议可以将数据直接与MLModel集成,这意味着模型可以查询数据源,而无需构造单独的输入实例。
自定义您的应用与模型的交互:

  1. 在类中或者结构体中采用MLFeatureProvider protocol以便模型可以通过featureValue(for:)方法查询它的输入特性值。
  2. 通过prediction(formL)或者prediction(from:options:)方法将您应用的MLFeatureProvider传递给您的MLModel。
  3. 使用从方法prediction(from:)返回的MLFeatureProvider来获取该预测的输出特性值。
2.2 访问值

func featureValue(for: String) -> MLFeatureValue?:(Required)
访问给定特性名称的特性值。
var featureNames: Set<String>(Required)
一组有效的特性名称。

3. MLDictionaryFeatureProvider(Class)

用于给定数据字典的方便包装器。

class MLDictionaryFeatureProvider : NSObject
3.1 概述

如果您的输入数据被存储在字典中,请考虑由字典支持的MLFeatureProvider类型。它是一个便利接口,省去了遍历字典来分配所有值的麻烦。

3.2 创建Provider

init(dictionary: [String : Any]):基于字典创建功能提供程序。

3.3 访问特性

subscript(String) -> MLFeatureValue?:subscript接口,以便功能提供程序传递到字典。
var dictionary: [String : MLFeatureValue]:支持字典。

4. MLBatchProvider

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

protocol MLBatchProvider
4.1 概述

与MLFeatureProvider相似,这个接口允许您定义您自己的batch provider。如果您的数据是异步收集的或者是内存密集型,则在数据结构上实现这个协议,通过批量处理来优化性能。

4.2 访问值

func features(at: Int) -> MLFeatureProvider(Required)
返回给定索引处的特性提供程序。
var count: Int(Required)
这批特性提供程序的数量。

5. MLArrayBatchProvider

用于批量特性提供程序的便利包装器。

class MLArrayBatchProvider : NSObject
5.1 概述

此批处理提供程序支持特性提供程序数组或特性值数组字典。

5.2 初始化

init(array: [MLFeatureProvider]):基于特性提供程序数组创建批处理提供程序。
init(dictionary: [String : [Any]]):根据特性名称及其关联的数据数组创建批处理提供程序。

5.3 访问特性提供程序

var array: [MLFeatureProvider]:特性提供程序数组。

更新模型(beta)

MLUpdateTask(Class)

class MLUpdateTask : MLTask

用额外的培训数据更新模型的任务。
正式版本后更新。

相关文章

网友评论

      本文标题:Core ML - 模型特性

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