LearningModelBinding.Bind 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
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 列舉中的值。 目前支援下列值:
|
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 是安全線程。