Windows.AI.MachineLearning 命名空间
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
使应用能够加载机器学习模型、绑定功能并评估结果。
类
ImageFeatureDescriptor |
描述模型期望的图像的属性。 |
ImageFeatureValue |
描述用于传入模型的图像的属性。 |
LearningModel |
表示经过训练的机器学习模型。 |
LearningModelBinding |
用于将值绑定到命名输入和输出特征。 |
LearningModelDevice |
用于评估机器学习模型的设备。 |
LearningModelEvaluationResult |
获取评估结果。 |
LearningModelSession |
用于评估机器学习模型。 |
LearningModelSessionOptions |
介绍在创建 LearningModelSession 对象期间使用的推理选项。 |
MapFeatureDescriptor |
映射是 (键、值) 对的集合。 |
SequenceFeatureDescriptor |
序列是元素数组。 |
TensorBoolean |
一个布尔张量对象。 |
TensorDouble |
一个 64 位浮点张量对象。 |
TensorFeatureDescriptor |
张量是值的多维数组。 |
TensorFloat |
一个 32 位浮点张量对象。 |
TensorFloat16Bit |
一个 16 位浮点张量对象。 |
TensorInt16Bit |
一个 16 位带符号整数张量对象。 |
TensorInt32Bit |
一个 32 位带符号整数张量对象。 |
TensorInt64Bit |
一个 64 位带符号整数张量对象。 |
TensorInt8Bit |
一个 8 位带符号整数张量对象。 |
TensorString |
字符串张量对象。 |
TensorUInt16Bit |
一个 16 位无符号整数张量对象。 |
TensorUInt32Bit |
一个 32 位无符号整数张量对象。 |
TensorUInt64Bit |
一个 64 位无符号整数张量对象。 |
TensorUInt8Bit |
一个 8 位无符号整数张量对象。 |
接口
ILearningModelFeatureDescriptor |
描述所有功能都具有的通用属性。 |
ILearningModelFeatureValue |
特征的实例化值。 |
ILearningModelOperatorProvider |
描述学习模型的操作器。 |
ITensor |
张量是多维值。 |
枚举
LearningModelDeviceKind |
定义可评估机器学习模型的设备类型的列表。 |
LearningModelFeatureKind |
机器学习模型的输入和输出特征类型。 |
LearningModelPixelRange |
定义由 Windows ML 支持的图像标称像素范围的列表。 在机器学习模型的元数据中指定正确的值。 |
TensorKind |
定义支持的张量数据类型的列表。 |
示例
以下示例加载模型,创建评估会话,获取模型的输入和输出特征,绑定这些功能,然后求值。
private async Task LoadAndEvaluateModelAsync(VideoFrame _inputFrame, string _modelFileName)
{
LearningModel _model;
ImageFeatureDescriptor _inputImageDescription;
TensorFeatureDescriptor _outputImageDescription;
LearningModelBinding _binding = null;
VideoFrame _outputFrame = null;
LearningModelSession _session;
try
{
// Load and create the model
var modelFile =
await StorageFile.GetFileFromApplicationUriAsync(new Uri($"ms-appx:///Assets/{_modelFileName}"));
_model = await LearningModel.LoadFromStorageFileAsync(modelFile);
// Create the evaluation session with the model
_session = new LearningModelSession(_model);
//Get input and output features of the model
List<ILearningModelFeatureDescriptor> inputFeatures = _model.InputFeatures.ToList();
List<ILearningModelFeatureDescriptor> outputFeatures = _model.OutputFeatures.ToList();
// Retrieve the first input feature which is an image
_inputImageDescription =
inputFeatures.FirstOrDefault(feature => feature.Kind == LearningModelFeatureKind.Image)
as ImageFeatureDescriptor;
// Retrieve the first output feature which is a tensor
_outputImageDescription =
outputFeatures.FirstOrDefault(feature => feature.Kind == LearningModelFeatureKind.Tensor)
as TensorFeatureDescriptor;
//Create output frame based on expected image width and height
_outputFrame = new VideoFrame(
BitmapPixelFormat.Bgra8,
(int)_inputImageDescription.Width,
(int)_inputImageDescription.Height);
//Create binding and then bind input/output features
_binding = new LearningModelBinding(_session);
_binding.Bind(_inputImageDescription.Name, _inputFrame);
_binding.Bind(_outputImageDescription.Name, _outputFrame);
//Evaluate and get the results
var results = await _session.EvaluateAsync(_binding, "test");
}
catch (Exception ex)
{
StatusBlock.Text = $"error: {ex.Message}";
_model = null;
}
}
注解
Windows Server
若要在 Windows Server 上使用此 API,必须使用带桌面体验的 Windows Server 2019。
线程安全
此 API 是线程安全的。