OnnxCatalog.ApplyOnnxModel Метод

Определение

Перегрузки

ApplyOnnxModel(TransformsCatalog, OnnxOptions)

OnnxScoringEstimator Создайте с помощью указанного .OnnxOptions Дополнительные сведения о необходимых зависимостях и его запуске на GPU см. в статье OnnxScoringEstimator .

ApplyOnnxModel(TransformsCatalog, String, Nullable<Int32>, Boolean)

OnnxScoringEstimatorСоздайте объект, который применяет предварительно обученную модель Onnx к входному столбцу. Входные и выходные столбцы определяются на основе входных и выходных столбцов предоставленной модели ONNX. Дополнительные сведения о необходимых зависимостях и его запуске на GPU см. в статье OnnxScoringEstimator .

ApplyOnnxModel(TransformsCatalog, String, IDictionary<String,Int32[]>, Nullable<Int32>, Boolean)

OnnxScoringEstimatorСоздайте объект, который применяет предварительно обученную модель Onnx к входному столбцу. Входные и выходные столбцы определяются на основе входных и выходных столбцов предоставленной модели ONNX. Дополнительные сведения о необходимых зависимостях и его запуске на GPU см. в статье OnnxScoringEstimator .

ApplyOnnxModel(TransformsCatalog, String, String, String, Nullable<Int32>, Boolean)

Создайте объект OnnxScoringEstimator, который применяет предварительно обученную модель Onnx к столбцу inputColumnName . Дополнительные сведения о необходимых зависимостях и его запуске на GPU см. в статье OnnxScoringEstimator .

ApplyOnnxModel(TransformsCatalog, String[], String[], String, Nullable<Int32>, Boolean)

OnnxScoringEstimatorСоздайте объект, который применяет предварительно обученную модель Onnx к столбцамinputColumnNames. Дополнительные сведения о необходимых зависимостях и его запуске на GPU см. в статье OnnxScoringEstimator .

ApplyOnnxModel(TransformsCatalog, String, String, String, IDictionary<String,Int32[]>, Nullable<Int32>, Boolean)

Создайте объект OnnxScoringEstimator, который применяет предварительно обученную модель Onnx к столбцу inputColumnName . Дополнительные сведения о необходимых зависимостях и его запуске на GPU см. в статье OnnxScoringEstimator .

ApplyOnnxModel(TransformsCatalog, String[], String[], String, IDictionary<String,Int32[]>, Nullable<Int32>, Boolean)

OnnxScoringEstimatorСоздайте объект, который применяет предварительно обученную модель Onnx к столбцамinputColumnNames. Дополнительные сведения о необходимых зависимостях и его запуске на GPU см. в статье OnnxScoringEstimator .

ApplyOnnxModel(TransformsCatalog, String[], String[], String, IDictionary<String,Int32[]>, Nullable<Int32>, Boolean, Int32)

OnnxScoringEstimatorСоздайте объект, который применяет предварительно обученную модель Onnx к столбцамinputColumnNames. Дополнительные сведения о необходимых зависимостях и его запуске на GPU см. в статье OnnxScoringEstimator .

ApplyOnnxModel(TransformsCatalog, OnnxOptions)

OnnxScoringEstimator Создайте с помощью указанного .OnnxOptions Дополнительные сведения о необходимых зависимостях и его запуске на GPU см. в статье OnnxScoringEstimator .

public static Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator ApplyOnnxModel (this Microsoft.ML.TransformsCatalog catalog, Microsoft.ML.Transforms.Onnx.OnnxOptions options);
static member ApplyOnnxModel : Microsoft.ML.TransformsCatalog * Microsoft.ML.Transforms.Onnx.OnnxOptions -> Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator
<Extension()>
Public Function ApplyOnnxModel (catalog As TransformsCatalog, options As OnnxOptions) As OnnxScoringEstimator

Параметры

catalog
TransformsCatalog

Каталог преобразования.

options
OnnxOptions

Параметры для OnnxScoringEstimator.

Возвращаемое значение

Комментарии

Если параметры. Значение GpuDeviceId — это nullMLContext.GpuDeviceId значение, которое будет использоваться, если это не nullтак.

Применяется к

ApplyOnnxModel(TransformsCatalog, String, Nullable<Int32>, Boolean)

OnnxScoringEstimatorСоздайте объект, который применяет предварительно обученную модель Onnx к входному столбцу. Входные и выходные столбцы определяются на основе входных и выходных столбцов предоставленной модели ONNX. Дополнительные сведения о необходимых зависимостях и его запуске на GPU см. в статье OnnxScoringEstimator .

public static Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator ApplyOnnxModel (this Microsoft.ML.TransformsCatalog catalog, string modelFile, int? gpuDeviceId = default, bool fallbackToCpu = false);
static member ApplyOnnxModel : Microsoft.ML.TransformsCatalog * string * Nullable<int> * bool -> Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator
<Extension()>
Public Function ApplyOnnxModel (catalog As TransformsCatalog, modelFile As String, Optional gpuDeviceId As Nullable(Of Integer) = Nothing, Optional fallbackToCpu As Boolean = false) As OnnxScoringEstimator

Параметры

catalog
TransformsCatalog

Каталог преобразования.

modelFile
String

Путь файла, содержащего модель ONNX.

gpuDeviceId
Nullable<Int32>

Необязательный идентификатор устройства GPU для выполнения на null ЦП.

fallbackToCpu
Boolean

Если ошибка GPU, вызовите исключение или откат к ЦП.

Возвращаемое значение

Примеры

using System;
using System.IO;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.Data;

namespace Samples.Dynamic
{
    public static class ApplyOnnxModel
    {
        public static void Example()
        {
            // Download the squeeznet image model from ONNX model zoo, version 1.2
            // https://github.com/onnx/models/tree/master/squeezenet or
            // https://s3.amazonaws.com/download.onnx/models/opset_8/squeezenet.tar.gz
            // or use Microsoft.ML.Onnx.TestModels nuget.
            var modelPath = @"squeezenet\00000001\model.onnx";

            // Create ML pipeline to score the data using OnnxScoringEstimator
            var mlContext = new MLContext();

            // Generate sample test data.
            var samples = GetTensorData();
            // Convert training data to IDataView, the general data type used in
            // ML.NET.
            var data = mlContext.Data.LoadFromEnumerable(samples);
            // Create the pipeline to score using provided onnx model.
            var pipeline = mlContext.Transforms.ApplyOnnxModel(modelPath);
            // Fit the pipeline and get the transformed values
            var transformedValues = pipeline.Fit(data).Transform(data);
            // Retrieve model scores into Prediction class
            var predictions = mlContext.Data.CreateEnumerable<Prediction>(
                transformedValues, reuseRowObject: false);

            // Iterate rows
            foreach (var prediction in predictions)
            {
                int numClasses = 0;
                foreach (var classScore in prediction.softmaxout_1.Take(3))
                {
                    Console.WriteLine("Class #" + numClasses++ + " score = " +
                        classScore);
                }
                Console.WriteLine(new string('-', 10));
            }

            // Results look like below...
            // Class #0 score = 4.544065E-05
            // Class #1 score = 0.003845858
            // Class #2 score = 0.0001249467
            // ----------
            // Class #0 score = 4.491953E-05
            // Class #1 score = 0.003848222
            // Class #2 score = 0.0001245592
            // ----------
        }

        // inputSize is the overall dimensions of the model input tensor.
        private const int inputSize = 224 * 224 * 3;

        // A class to hold sample tensor data. Member name should match
        // the inputs that the model expects (in this case, data_0)
        public class TensorData
        {
            [VectorType(inputSize)]
            public float[] data_0 { get; set; }
        }

        // Method to generate sample test data. Returns 2 sample rows.
        public static TensorData[] GetTensorData()
        {
            // This can be any numerical data. Assume image pixel values.
            var image1 = Enumerable.Range(0, inputSize).Select(x => (float)x /
                inputSize).ToArray();

            var image2 = Enumerable.Range(0, inputSize).Select(x => (float)(x +
                10000) / inputSize).ToArray();

            return new TensorData[] { new TensorData() { data_0 = image1 }, new
                TensorData() { data_0 = image2 } };
        }

        // Class to contain the output values from the transformation.
        // This model generates a vector of 1000 floats.
        class Prediction
        {
            [VectorType(1000)]
            public float[] softmaxout_1 { get; set; }
        }
    }
}

Комментарии

Имя или тип входных столбцов должно точно совпадать с именем и типом входных данных модели ONNX. Имя или тип созданных выходных столбцов будет соответствовать имени или типу выходных данных модели ONNX. Если значение gpuDeviceId является null значением MLContext.GpuDeviceId , будет использоваться, если это не nullтак.

Применяется к

ApplyOnnxModel(TransformsCatalog, String, IDictionary<String,Int32[]>, Nullable<Int32>, Boolean)

OnnxScoringEstimatorСоздайте объект, который применяет предварительно обученную модель Onnx к входному столбцу. Входные и выходные столбцы определяются на основе входных и выходных столбцов предоставленной модели ONNX. Дополнительные сведения о необходимых зависимостях и его запуске на GPU см. в статье OnnxScoringEstimator .

public static Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator ApplyOnnxModel (this Microsoft.ML.TransformsCatalog catalog, string modelFile, System.Collections.Generic.IDictionary<string,int[]> shapeDictionary, int? gpuDeviceId = default, bool fallbackToCpu = false);
static member ApplyOnnxModel : Microsoft.ML.TransformsCatalog * string * System.Collections.Generic.IDictionary<string, int[]> * Nullable<int> * bool -> Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator
<Extension()>
Public Function ApplyOnnxModel (catalog As TransformsCatalog, modelFile As String, shapeDictionary As IDictionary(Of String, Integer()), Optional gpuDeviceId As Nullable(Of Integer) = Nothing, Optional fallbackToCpu As Boolean = false) As OnnxScoringEstimator

Параметры

catalog
TransformsCatalog

Каталог преобразования.

modelFile
String

Путь файла, содержащего модель ONNX.

shapeDictionary
IDictionary<String,Int32[]>

Фигуры ONNX для использования над загруженными modelFileиз . Для ключей используются имена, как указано в модели ONNX, например "input". Указание фигур с этим параметром особенно полезно для работы с входными и выходными данными измерения переменных.

gpuDeviceId
Nullable<Int32>

Необязательный идентификатор устройства GPU для выполнения на null ЦП.

fallbackToCpu
Boolean

Если ошибка GPU, вызовите исключение или откат к ЦП.

Возвращаемое значение

Примеры

using System;
using System.IO;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.Data;

namespace Samples.Dynamic
{
    public static class ApplyOnnxModel
    {
        public static void Example()
        {
            // Download the squeeznet image model from ONNX model zoo, version 1.2
            // https://github.com/onnx/models/tree/master/squeezenet or
            // https://s3.amazonaws.com/download.onnx/models/opset_8/squeezenet.tar.gz
            // or use Microsoft.ML.Onnx.TestModels nuget.
            var modelPath = @"squeezenet\00000001\model.onnx";

            // Create ML pipeline to score the data using OnnxScoringEstimator
            var mlContext = new MLContext();

            // Generate sample test data.
            var samples = GetTensorData();
            // Convert training data to IDataView, the general data type used in
            // ML.NET.
            var data = mlContext.Data.LoadFromEnumerable(samples);
            // Create the pipeline to score using provided onnx model.
            var pipeline = mlContext.Transforms.ApplyOnnxModel(modelPath);
            // Fit the pipeline and get the transformed values
            var transformedValues = pipeline.Fit(data).Transform(data);
            // Retrieve model scores into Prediction class
            var predictions = mlContext.Data.CreateEnumerable<Prediction>(
                transformedValues, reuseRowObject: false);

            // Iterate rows
            foreach (var prediction in predictions)
            {
                int numClasses = 0;
                foreach (var classScore in prediction.softmaxout_1.Take(3))
                {
                    Console.WriteLine("Class #" + numClasses++ + " score = " +
                        classScore);
                }
                Console.WriteLine(new string('-', 10));
            }

            // Results look like below...
            // Class #0 score = 4.544065E-05
            // Class #1 score = 0.003845858
            // Class #2 score = 0.0001249467
            // ----------
            // Class #0 score = 4.491953E-05
            // Class #1 score = 0.003848222
            // Class #2 score = 0.0001245592
            // ----------
        }

        // inputSize is the overall dimensions of the model input tensor.
        private const int inputSize = 224 * 224 * 3;

        // A class to hold sample tensor data. Member name should match
        // the inputs that the model expects (in this case, data_0)
        public class TensorData
        {
            [VectorType(inputSize)]
            public float[] data_0 { get; set; }
        }

        // Method to generate sample test data. Returns 2 sample rows.
        public static TensorData[] GetTensorData()
        {
            // This can be any numerical data. Assume image pixel values.
            var image1 = Enumerable.Range(0, inputSize).Select(x => (float)x /
                inputSize).ToArray();

            var image2 = Enumerable.Range(0, inputSize).Select(x => (float)(x +
                10000) / inputSize).ToArray();

            return new TensorData[] { new TensorData() { data_0 = image1 }, new
                TensorData() { data_0 = image2 } };
        }

        // Class to contain the output values from the transformation.
        // This model generates a vector of 1000 floats.
        class Prediction
        {
            [VectorType(1000)]
            public float[] softmaxout_1 { get; set; }
        }
    }
}

Комментарии

Имя или тип входных столбцов должно точно совпадать с именем и типом входных данных модели ONNX. Имя или тип созданных выходных столбцов будет соответствовать имени или типу выходных данных модели ONNX. Если значение gpuDeviceId является null значением MLContext.GpuDeviceId , будет использоваться, если это не nullтак.

Применяется к

ApplyOnnxModel(TransformsCatalog, String, String, String, Nullable<Int32>, Boolean)

Создайте объект OnnxScoringEstimator, который применяет предварительно обученную модель Onnx к столбцу inputColumnName . Дополнительные сведения о необходимых зависимостях и его запуске на GPU см. в статье OnnxScoringEstimator .

public static Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator ApplyOnnxModel (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, string inputColumnName, string modelFile, int? gpuDeviceId = default, bool fallbackToCpu = false);
static member ApplyOnnxModel : Microsoft.ML.TransformsCatalog * string * string * string * Nullable<int> * bool -> Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator
<Extension()>
Public Function ApplyOnnxModel (catalog As TransformsCatalog, outputColumnName As String, inputColumnName As String, modelFile As String, Optional gpuDeviceId As Nullable(Of Integer) = Nothing, Optional fallbackToCpu As Boolean = false) As OnnxScoringEstimator

Параметры

catalog
TransformsCatalog

Каталог преобразования.

outputColumnName
String

Выходной столбец, полученный из преобразования.

inputColumnName
String

Входной столбец.

modelFile
String

Путь файла, содержащего модель ONNX.

gpuDeviceId
Nullable<Int32>

Необязательный идентификатор устройства GPU для выполнения на null ЦП.

fallbackToCpu
Boolean

Если ошибка GPU, вызовите исключение или откат к ЦП.

Возвращаемое значение

Примеры

using System;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.Data;
using Microsoft.ML.Transforms.Image;

namespace Samples.Dynamic
{
    public static class ApplyOnnxModelWithInMemoryImages
    {
        // Example of applying ONNX transform on in-memory images.
        public static void Example()
        {
            // Download the squeeznet image model from ONNX model zoo, version 1.2
            // https://github.com/onnx/models/tree/master/vision/classification/squeezenet or use
            // Microsoft.ML.Onnx.TestModels nuget.
            // It's a multiclass classifier. It consumes an input "data_0" and
            // produces an output "softmaxout_1".
            var modelPath = @"squeezenet\00000001\model.onnx";

            // Create ML pipeline to score the data using OnnxScoringEstimator
            var mlContext = new MLContext();

            // Create in-memory data points. Its Image/Scores field is the
            // input /output of the used ONNX model.
            var dataPoints = new ImageDataPoint[]
            {
                new ImageDataPoint(red: 255, green: 0, blue: 0), // Red color
                new ImageDataPoint(red: 0, green: 128, blue: 0)  // Green color
            };

            // Convert training data to IDataView, the general data type used in
            // ML.NET.
            var dataView = mlContext.Data.LoadFromEnumerable(dataPoints);

            // Create a ML.NET pipeline which contains two steps. First,
            // ExtractPixle is used to convert the 224x224 image to a 3x224x224
            // float tensor. Then the float tensor is fed into a ONNX model with an
            // input called "data_0" and an output called "softmaxout_1". Note that
            // "data_0" and "softmaxout_1" are model input and output names stored
            // in the used ONNX model file. Users may need to inspect their own
            // models to get the right input and output column names.
            // Map column "Image" to column "data_0"
            // Map column "data_0" to column "softmaxout_1"
            var pipeline = mlContext.Transforms.ExtractPixels("data_0", "Image")
                .Append(mlContext.Transforms.ApplyOnnxModel("softmaxout_1",
                "data_0", modelPath));

            var model = pipeline.Fit(dataView);
            var onnx = model.Transform(dataView);

            // Convert IDataView back to IEnumerable<ImageDataPoint> so that user
            // can inspect the output, column "softmaxout_1", of the ONNX transform.
            // Note that Column "softmaxout_1" would be stored in ImageDataPont
            //.Scores because the added attributed [ColumnName("softmaxout_1")]
            // tells that ImageDataPont.Scores is equivalent to column
            // "softmaxout_1".
            var transformedDataPoints = mlContext.Data.CreateEnumerable<
                ImageDataPoint>(onnx, false).ToList();

            // The scores are probabilities of all possible classes, so they should
            // all be positive.
            foreach (var dataPoint in transformedDataPoints)
            {
                var firstClassProb = dataPoint.Scores.First();
                var lastClassProb = dataPoint.Scores.Last();
                Console.WriteLine("The probability of being the first class is " +
                    (firstClassProb * 100) + "%.");

                Console.WriteLine($"The probability of being the last class is " +
                    (lastClassProb * 100) + "%.");
            }

            // Expected output:
            //  The probability of being the first class is 0.002542659%.
            //  The probability of being the last class is 0.0292684%.
            //  The probability of being the first class is 0.02258059%.
            //  The probability of being the last class is 0.394428%.
        }

        // This class is used in Example() to describe data points which will be
        // consumed by ML.NET pipeline.
        private class ImageDataPoint
        {
            // Height of Image.
            private const int height = 224;

            // Width of Image.
            private const int width = 224;

            // Image will be consumed by ONNX image multiclass classification model.
            [ImageType(height, width)]
            public MLImage Image { get; set; }

            // Expected output of ONNX model. It contains probabilities of all
            // classes. Note that the ColumnName below should match the output name
            // in the used ONNX model file.
            [ColumnName("softmaxout_1")]
            public float[] Scores { get; set; }

            public ImageDataPoint()
            {
                Image = null;
            }

            public ImageDataPoint(byte red, byte green, byte blue)
            {
                byte[] imageData = new byte[width * height * 4]; // 4 for the red, green, blue and alpha colors
                for (int i = 0; i < imageData.Length; i += 4)
                {
                    // Fill the buffer with the Bgra32 format
                    imageData[i] = blue;
                    imageData[i + 1] = green;
                    imageData[i + 2] = red;
                    imageData[i + 3] = 255;
                }

                Image = MLImage.CreateFromPixels(width, height, MLPixelFormat.Bgra32, imageData);
            }
        }
    }
}

Комментарии

Если значение gpuDeviceId является null значением MLContext.GpuDeviceId , будет использоваться, если это не nullтак.

Применяется к

ApplyOnnxModel(TransformsCatalog, String[], String[], String, Nullable<Int32>, Boolean)

OnnxScoringEstimatorСоздайте объект, который применяет предварительно обученную модель Onnx к столбцамinputColumnNames. Дополнительные сведения о необходимых зависимостях и его запуске на GPU см. в статье OnnxScoringEstimator .

public static Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator ApplyOnnxModel (this Microsoft.ML.TransformsCatalog catalog, string[] outputColumnNames, string[] inputColumnNames, string modelFile, int? gpuDeviceId = default, bool fallbackToCpu = false);
static member ApplyOnnxModel : Microsoft.ML.TransformsCatalog * string[] * string[] * string * Nullable<int> * bool -> Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator
<Extension()>
Public Function ApplyOnnxModel (catalog As TransformsCatalog, outputColumnNames As String(), inputColumnNames As String(), modelFile As String, Optional gpuDeviceId As Nullable(Of Integer) = Nothing, Optional fallbackToCpu As Boolean = false) As OnnxScoringEstimator

Параметры

catalog
TransformsCatalog

Каталог преобразования.

outputColumnNames
String[]

Выходные столбцы, полученные из преобразования.

inputColumnNames
String[]

Входные столбцы.

modelFile
String

Путь файла, содержащего модель ONNX.

gpuDeviceId
Nullable<Int32>

Необязательный идентификатор устройства GPU для выполнения на null ЦП.

fallbackToCpu
Boolean

Если ошибка GPU, вызовите исключение или откат к ЦП.

Возвращаемое значение

Комментарии

Если значение gpuDeviceId является null значением MLContext.GpuDeviceId , будет использоваться, если это не nullтак.

Применяется к

ApplyOnnxModel(TransformsCatalog, String, String, String, IDictionary<String,Int32[]>, Nullable<Int32>, Boolean)

Создайте объект OnnxScoringEstimator, который применяет предварительно обученную модель Onnx к столбцу inputColumnName . Дополнительные сведения о необходимых зависимостях и его запуске на GPU см. в статье OnnxScoringEstimator .

public static Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator ApplyOnnxModel (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, string inputColumnName, string modelFile, System.Collections.Generic.IDictionary<string,int[]> shapeDictionary, int? gpuDeviceId = default, bool fallbackToCpu = false);
static member ApplyOnnxModel : Microsoft.ML.TransformsCatalog * string * string * string * System.Collections.Generic.IDictionary<string, int[]> * Nullable<int> * bool -> Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator
<Extension()>
Public Function ApplyOnnxModel (catalog As TransformsCatalog, outputColumnName As String, inputColumnName As String, modelFile As String, shapeDictionary As IDictionary(Of String, Integer()), Optional gpuDeviceId As Nullable(Of Integer) = Nothing, Optional fallbackToCpu As Boolean = false) As OnnxScoringEstimator

Параметры

catalog
TransformsCatalog

Каталог преобразования.

outputColumnName
String

Выходной столбец, полученный из преобразования.

inputColumnName
String

Входной столбец.

modelFile
String

Путь файла, содержащего модель ONNX.

shapeDictionary
IDictionary<String,Int32[]>

Фигуры ONNX для использования над загруженными modelFileиз . Для ключей используются имена, как указано в модели ONNX, например "input". Указание фигур с этим параметром особенно полезно для работы с входными и выходными данными измерения переменных.

gpuDeviceId
Nullable<Int32>

Необязательный идентификатор устройства GPU для выполнения на null ЦП.

fallbackToCpu
Boolean

Если ошибка GPU, вызовите исключение или откат к ЦП.

Возвращаемое значение

Примеры

using System;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.Data;
using Microsoft.ML.Transforms.Image;

namespace Samples.Dynamic
{
    public static class ApplyOnnxModelWithInMemoryImages
    {
        // Example of applying ONNX transform on in-memory images.
        public static void Example()
        {
            // Download the squeeznet image model from ONNX model zoo, version 1.2
            // https://github.com/onnx/models/tree/master/vision/classification/squeezenet or use
            // Microsoft.ML.Onnx.TestModels nuget.
            // It's a multiclass classifier. It consumes an input "data_0" and
            // produces an output "softmaxout_1".
            var modelPath = @"squeezenet\00000001\model.onnx";

            // Create ML pipeline to score the data using OnnxScoringEstimator
            var mlContext = new MLContext();

            // Create in-memory data points. Its Image/Scores field is the
            // input /output of the used ONNX model.
            var dataPoints = new ImageDataPoint[]
            {
                new ImageDataPoint(red: 255, green: 0, blue: 0), // Red color
                new ImageDataPoint(red: 0, green: 128, blue: 0)  // Green color
            };

            // Convert training data to IDataView, the general data type used in
            // ML.NET.
            var dataView = mlContext.Data.LoadFromEnumerable(dataPoints);

            // Create a ML.NET pipeline which contains two steps. First,
            // ExtractPixle is used to convert the 224x224 image to a 3x224x224
            // float tensor. Then the float tensor is fed into a ONNX model with an
            // input called "data_0" and an output called "softmaxout_1". Note that
            // "data_0" and "softmaxout_1" are model input and output names stored
            // in the used ONNX model file. Users may need to inspect their own
            // models to get the right input and output column names.
            // Map column "Image" to column "data_0"
            // Map column "data_0" to column "softmaxout_1"
            var pipeline = mlContext.Transforms.ExtractPixels("data_0", "Image")
                .Append(mlContext.Transforms.ApplyOnnxModel("softmaxout_1",
                "data_0", modelPath));

            var model = pipeline.Fit(dataView);
            var onnx = model.Transform(dataView);

            // Convert IDataView back to IEnumerable<ImageDataPoint> so that user
            // can inspect the output, column "softmaxout_1", of the ONNX transform.
            // Note that Column "softmaxout_1" would be stored in ImageDataPont
            //.Scores because the added attributed [ColumnName("softmaxout_1")]
            // tells that ImageDataPont.Scores is equivalent to column
            // "softmaxout_1".
            var transformedDataPoints = mlContext.Data.CreateEnumerable<
                ImageDataPoint>(onnx, false).ToList();

            // The scores are probabilities of all possible classes, so they should
            // all be positive.
            foreach (var dataPoint in transformedDataPoints)
            {
                var firstClassProb = dataPoint.Scores.First();
                var lastClassProb = dataPoint.Scores.Last();
                Console.WriteLine("The probability of being the first class is " +
                    (firstClassProb * 100) + "%.");

                Console.WriteLine($"The probability of being the last class is " +
                    (lastClassProb * 100) + "%.");
            }

            // Expected output:
            //  The probability of being the first class is 0.002542659%.
            //  The probability of being the last class is 0.0292684%.
            //  The probability of being the first class is 0.02258059%.
            //  The probability of being the last class is 0.394428%.
        }

        // This class is used in Example() to describe data points which will be
        // consumed by ML.NET pipeline.
        private class ImageDataPoint
        {
            // Height of Image.
            private const int height = 224;

            // Width of Image.
            private const int width = 224;

            // Image will be consumed by ONNX image multiclass classification model.
            [ImageType(height, width)]
            public MLImage Image { get; set; }

            // Expected output of ONNX model. It contains probabilities of all
            // classes. Note that the ColumnName below should match the output name
            // in the used ONNX model file.
            [ColumnName("softmaxout_1")]
            public float[] Scores { get; set; }

            public ImageDataPoint()
            {
                Image = null;
            }

            public ImageDataPoint(byte red, byte green, byte blue)
            {
                byte[] imageData = new byte[width * height * 4]; // 4 for the red, green, blue and alpha colors
                for (int i = 0; i < imageData.Length; i += 4)
                {
                    // Fill the buffer with the Bgra32 format
                    imageData[i] = blue;
                    imageData[i + 1] = green;
                    imageData[i + 2] = red;
                    imageData[i + 3] = 255;
                }

                Image = MLImage.CreateFromPixels(width, height, MLPixelFormat.Bgra32, imageData);
            }
        }
    }
}

Комментарии

Если значение gpuDeviceId является null значением MLContext.GpuDeviceId , будет использоваться, если это не nullтак.

Применяется к

ApplyOnnxModel(TransformsCatalog, String[], String[], String, IDictionary<String,Int32[]>, Nullable<Int32>, Boolean)

OnnxScoringEstimatorСоздайте объект, который применяет предварительно обученную модель Onnx к столбцамinputColumnNames. См. дополнительные сведения OnnxScoringEstimator о необходимых зависимостях и о том, как запустить его на GPU.

public static Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator ApplyOnnxModel (this Microsoft.ML.TransformsCatalog catalog, string[] outputColumnNames, string[] inputColumnNames, string modelFile, System.Collections.Generic.IDictionary<string,int[]> shapeDictionary, int? gpuDeviceId = default, bool fallbackToCpu = false);
static member ApplyOnnxModel : Microsoft.ML.TransformsCatalog * string[] * string[] * string * System.Collections.Generic.IDictionary<string, int[]> * Nullable<int> * bool -> Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator
<Extension()>
Public Function ApplyOnnxModel (catalog As TransformsCatalog, outputColumnNames As String(), inputColumnNames As String(), modelFile As String, shapeDictionary As IDictionary(Of String, Integer()), Optional gpuDeviceId As Nullable(Of Integer) = Nothing, Optional fallbackToCpu As Boolean = false) As OnnxScoringEstimator

Параметры

catalog
TransformsCatalog

Каталог преобразования.

outputColumnNames
String[]

Выходные столбцы, полученные из преобразования.

inputColumnNames
String[]

Входные столбцы.

modelFile
String

Путь файла, содержащего модель ONNX.

shapeDictionary
IDictionary<String,Int32[]>

Фигуры ONNX для использования над загруженными.modelFile Для ключей используются имена, как указано в модели ONNX, например "input". Указание фигур с этим параметром особенно полезно для работы с входными и выходными данными переменных измерений.

gpuDeviceId
Nullable<Int32>

Необязательный идентификатор устройства GPU для запуска выполнения null на ЦП.

fallbackToCpu
Boolean

Если ошибка GPU, создайте исключение или откат к ЦП.

Возвращаемое значение

Комментарии

Если значение gpuDeviceId является null значением MLContext.GpuDeviceId , будет использоваться, если это не nullтак.

Применяется к

ApplyOnnxModel(TransformsCatalog, String[], String[], String, IDictionary<String,Int32[]>, Nullable<Int32>, Boolean, Int32)

OnnxScoringEstimatorСоздайте объект, который применяет предварительно обученную модель Onnx к столбцамinputColumnNames. См. дополнительные сведения OnnxScoringEstimator о необходимых зависимостях и о том, как запустить его на GPU.

public static Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator ApplyOnnxModel (this Microsoft.ML.TransformsCatalog catalog, string[] outputColumnNames, string[] inputColumnNames, string modelFile, System.Collections.Generic.IDictionary<string,int[]> shapeDictionary, int? gpuDeviceId = default, bool fallbackToCpu = false, int recursionLimit = 100);
static member ApplyOnnxModel : Microsoft.ML.TransformsCatalog * string[] * string[] * string * System.Collections.Generic.IDictionary<string, int[]> * Nullable<int> * bool * int -> Microsoft.ML.Transforms.Onnx.OnnxScoringEstimator
<Extension()>
Public Function ApplyOnnxModel (catalog As TransformsCatalog, outputColumnNames As String(), inputColumnNames As String(), modelFile As String, shapeDictionary As IDictionary(Of String, Integer()), Optional gpuDeviceId As Nullable(Of Integer) = Nothing, Optional fallbackToCpu As Boolean = false, Optional recursionLimit As Integer = 100) As OnnxScoringEstimator

Параметры

catalog
TransformsCatalog

Каталог преобразования.

outputColumnNames
String[]

Выходные столбцы, полученные из преобразования.

inputColumnNames
String[]

Входные столбцы.

modelFile
String

Путь файла, содержащего модель ONNX.

shapeDictionary
IDictionary<String,Int32[]>

Фигуры ONNX для использования над загруженными.modelFile Для ключей используются имена, как указано в модели ONNX, например "input". Указание фигур с этим параметром особенно полезно для работы с входными и выходными данными переменных измерений.

gpuDeviceId
Nullable<Int32>

Необязательный идентификатор устройства GPU для запуска выполнения null на ЦП.

fallbackToCpu
Boolean

Если ошибка GPU, создайте исключение или откат к ЦП.

recursionLimit
Int32

Необязательный атрибут указывает ограничение рекурсии Protobuf CodedInputStream. По умолчанию установлено значение 100.

Возвращаемое значение

Комментарии

Если значение gpuDeviceId является null значением MLContext.GpuDeviceId , будет использоваться, если это не nullтак.

Применяется к