共用方式為


LearningModelBinding.Bind 方法

定義

多載

Bind(String, Object)

將值系結至具名功能。

Bind(String, Object, IPropertySet)

使用屬性來控制系結,將值系結至具名功能。

Bind(String, Object)

將值系結至具名功能。

public:
 virtual void Bind(Platform::String ^ name, Platform::Object ^ value) = Bind;
/// [Windows.Foundation.Metadata.Overload("Bind")]
void Bind(winrt::hstring const& name, IInspectable const& value);
[Windows.Foundation.Metadata.Overload("Bind")]
public void Bind(string name, object value);
function bind(name, value)
Public Sub Bind (name As String, value As Object)

參數

name
String

Platform::String

winrt::hstring

功能名稱。

value
Object

Platform::Object

IInspectable

要系結的值。

屬性

範例

下列範例會擷取第一個輸入和輸出功能、建立輸出框架、系結輸入和輸出特徵,以及規避。

private async Task EvaluateModelAsync(
    VideoFrame _inputFrame, 
    LearningModelSession _session, 
    IReadOnlyList<ILearningModelFeatureDescriptor> _inputFeatures, 
    IReadOnlyList<ILearningModelFeatureDescriptor> _outputFeatures,
    LearningModel _model)
{
    ImageFeatureDescriptor _inputImageDescription;
    TensorFeatureDescriptor _outputImageDescription;
    LearningModelBinding _binding = null;
    VideoFrame _outputFrame = null;

    try
    {
        // 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 是安全線程。

適用於

Bind(String, Object, IPropertySet)

使用屬性來控制系結,將值系結至具名功能。

public:
 virtual void Bind(Platform::String ^ name, Platform::Object ^ value, IPropertySet ^ props) = Bind;
/// [Windows.Foundation.Metadata.Overload("BindWithProperties")]
void Bind(winrt::hstring const& name, IInspectable const& value, IPropertySet const& props);
[Windows.Foundation.Metadata.Overload("BindWithProperties")]
public void Bind(string name, object value, IPropertySet props);
function bind(name, value, props)
Public Sub Bind (name As String, value As Object, props As IPropertySet)

參數

name
String

Platform::String

winrt::hstring

要系結的功能名稱。

value
Object

Platform::Object

IInspectable

要系結至功能的值。

props
IPropertySet

屬性對應,其中包含索引鍵/值組,描述系結的張量化和釋放保留行為。 如需詳細資訊,請參閱一節。

屬性

備註

這些是 props 參數的有效索引鍵/值組:

名稱 描述
BitmapBounds PropertyType.UInt32Array 系結輸入時,BitmapBounds 屬性會指定裁剪界限。 裁剪的影像將會擷取並用來作為執行推斷的輸入。

系結輸出時,BitmapBounds 屬性會指定目標輸出區域的界限。 推斷的結果將會寫入系結映射內的目標輸出區域。

BitmapBounds 屬性會指定為具有 值的 [left, top, width, height] UInt32 陣列。

只有在系結 ImageFeatureValue時,此屬性才會生效。
BitmapPixelFormat PropertyType.Int32 系結輸入或輸出時,BitmapPixelFormat 屬性會指定模型作者針對特定特徵值所預期的像素格式。 當 ONNX 模型的Image 中繼資料遺漏Image.BitmapPixelFormat中繼資料時,可以使用這個屬性在執行時間加以指定。 系結影像會自動轉換成指定的像素格式,以供模型取用。

BitmapPixelFormat 必須指定為 Int32 值,以對應到 Windows.Graphics.Imaging.BitmapPixelFormat 列舉中的值。 目前支援下列值:
  • BitmapPixelFormat.Rgba8
  • BitmapPixelFormat.Bgra8
  • BitmapPixelFormat.Gray8
只有在系結 ImageFeatureValue時,此屬性才會生效。
DisableTensorCpuSync PropertyType.Boolean 系結 ID3D12Resource 所支援的輸出張量時,DisableTensorCpuSync 屬性可用來防止將 GPU/NPU 輸出複製回 CPU 張量。 根據預設, LearningModelSession.Evaluate API 呼叫是封鎖呼叫,而且可確保在 CPU 完成後可以使用推斷結果。

在某些 GPU/NPU 評估案例中,建議您在 GPU/NPU 上保留推斷結果;並將結果複製回 CPU 是不必要的且較慢的。 若要避免該複製,請在系結期間啟用 DisableTensorCpuSync 屬性。

只有在系結 ITensor 或其具體類型時,此屬性才會生效, (也就是 TensorFloat) 。

此屬性是在 Windows 11 21H2 21H2 (10.0 版中引進;組建 22000) 。
PixelRange PropertyType.Int32 系結輸入或輸出時,PixelRange 屬性會指定模型作者針對特定特徵值所預期的正規化範圍。 當 ONNX 模型的Image 中繼資料遺漏Image.NominalPixelRange中繼資料時,可以使用這個屬性在執行時間加以指定。 系結影像會自動轉換成指定的正規化範圍,以供模型取用。

PixelRange 必須指定為 Int32 值,以對應到 Windows.AI.MachineLearning.LearningModelPixelRange 列舉中的值。

只有在系結 ImageFeatureValue時,此屬性才會生效。

Windows Server

若要在 Windows Server 上使用此 API,您必須搭配桌面體驗使用 Windows Server 2019。

執行緒安全

此 API 是安全線程。

適用於