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
Чтобы использовать этот API в Windows Server, необходимо использовать 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 указывается как массив UInt32 со значениями [left, top, width, height] . Это свойство вступает в силу только при привязке ImageFeatureValue. |
BitmapPixelFormat | PropertyType.Int32 | При привязке входных или выходных данных свойство BitmapPixelFormat задает формат пикселей, предназначенный автором модели для определенного значения признака. Если метаданные Image.BitmapPixelFormat отсутствуют в метаданных image модели ONNX, их можно указать во время выполнения с помощью этого свойства. Привязанные изображения будут автоматически преобразованы в указанный формат пикселей для использования моделью. BitmapPixelFormat необходимо указать как значение Int32, соответствующее значениям в перечислении Windows.Graphics.Imaging.BitmapPixelFormat . В настоящее время поддерживаются следующие значения:
|
DisableTensorCpuSync | PropertyType.Boolean | При привязке выходного тензора, поддерживаемого ID3D12Resource, можно использовать свойство DisableTensorCpuSync, чтобы предотвратить копирование выходных данных GPU/NPU обратно в тензор ЦП. По умолчанию вызов API LearningModelSession.Evaluate является блокирующим вызовом и обеспечивает доступность результатов вывода на ЦП после завершения. В некоторых сценариях оценки GPU/NPU желательно сохранить результаты вывода в GPU/NPU; и копирование результатов обратно в ЦП является ненужным и медленным. Чтобы избежать этого копирования, включите свойство DisableTensorCpuSync во время привязки. Это свойство вступает в силу только при привязке ITensor или его конкретных типов (т. е. TensorFloat). Это свойство появилось в Windows 11 версии 21H2 (10.0; Сборка 22000). |
PixelRange | PropertyType.Int32 | При привязке входных или выходных данных свойство PixelRange указывает диапазон нормализации, предназначенный автором модели для определенного значения признака. Если метаданные Image.NominalPixelRange отсутствуют в метаданных image модели ONNX, их можно указать во время выполнения с помощью этого свойства. Привязанные изображения будут автоматически преобразованы в указанный нормализованный диапазон для использования моделью. PixelRange необходимо указать как значение Int32, соответствующее значениям в перечислении Windows.AI.MachineLearning.LearningModelPixelRange . Это свойство вступает в силу только при привязке ImageFeatureValue. |
Windows Server
Чтобы использовать этот API в Windows Server, необходимо использовать Windows Server 2019 с возможностями рабочего стола.
Потокобезопасность
Этот API является потокобезопасным.