Windows.AI.MachineLearning 命名空间

使应用能够加载机器学习模型、绑定功能并评估结果。

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 是线程安全的。

另请参阅