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集成,这意味着模型可以查询数据源,而无需构造单独的输入实例。
自定义您的应用与模型的交互:
- 在类中或者结构体中采用
MLFeatureProvider protocol
以便模型可以通过featureValue(for:)
方法查询它的输入特性值。 - 通过
prediction(formL)
或者prediction(from:options:)
方法将您应用的MLFeatureProvider传递给您的MLModel。 - 使用从方法
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
用额外的培训数据更新模型的任务。
正式版本后更新。
网友评论