OnnxCatalog.ApplyOnnxModel 方法

定義

多載

ApplyOnnxModel(TransformsCatalog, OnnxOptions)

OnnxScoringEstimator使用指定的 OnnxOptions 建立 。 請參閱 OnnxScoringEstimator 以深入瞭解必要的相依性,以及如何在 GPU 上執行。

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

建立 OnnxScoringEstimator ,它會將預先定型的 Onnx 模型套用至輸入資料行。 輸入/輸出資料行是根據所提供 ONNX 模型的輸入/輸出資料行來決定。 請參閱 OnnxScoringEstimator 以深入瞭解必要的相依性,以及如何在 GPU 上執行。

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

建立 OnnxScoringEstimator ,它會將預先定型的 Onnx 模型套用至輸入資料行。 輸入/輸出資料行是根據所提供 ONNX 模型的輸入/輸出資料行來決定。 請參閱 OnnxScoringEstimator 以深入瞭解必要的相依性,以及如何在 GPU 上執行。

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

建立 , OnnxScoringEstimator 它會將預先定型的 Onnx 模型套用至資料 inputColumnName 行。 請參閱 OnnxScoringEstimator 以深入瞭解必要的相依性,以及如何在 GPU 上執行。

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

建立 , OnnxScoringEstimator 將預先定型的 Onnx 模型套用至資料 inputColumnNames 行。 請參閱 OnnxScoringEstimator 以深入瞭解必要的相依性,以及如何在 GPU 上執行。

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

建立 , OnnxScoringEstimator 它會將預先定型的 Onnx 模型套用至資料 inputColumnName 行。 請參閱 OnnxScoringEstimator 以深入瞭解必要的相依性,以及如何在 GPU 上執行。

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

建立 , OnnxScoringEstimator 將預先定型的 Onnx 模型套用至資料 inputColumnNames 行。 請參閱 OnnxScoringEstimator 以深入瞭解必要的相依性,以及如何在 GPU 上執行。

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

建立 , OnnxScoringEstimator 將預先定型的 Onnx 模型套用至資料 inputColumnNames 行。 請參閱 OnnxScoringEstimator 以深入瞭解必要的相依性,以及如何在 GPU 上執行。

ApplyOnnxModel(TransformsCatalog, OnnxOptions)

OnnxScoringEstimator使用指定的 OnnxOptions 建立 。 請參閱 OnnxScoringEstimator 以深入瞭解必要的相依性,以及如何在 GPU 上執行。

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 模型的輸入/輸出資料行來決定。 請參閱 OnnxScoringEstimator 以深入瞭解必要的相依性,以及如何在 GPU 上執行。

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>

要在 CPU 上執行的選擇性 GPU 裝置識別碼。 null 若要在 CPU 上執行,則為 。

fallbackToCpu
Boolean

如果發生 GPU 錯誤,請引發例外狀況或回復為 CPU。

傳回

範例

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 值不是 nullMLContext.GpuDeviceId ,則會使用此值 null

適用於

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

建立 OnnxScoringEstimator ,它會將預先定型的 Onnx 模型套用至輸入資料行。 輸入/輸出資料行是根據所提供 ONNX 模型的輸入/輸出資料行來決定。 請參閱 OnnxScoringEstimator 以深入瞭解必要的相依性,以及如何在 GPU 上執行。

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[]>

要用於從 modelFile 載入的 ONNX 圖形。 對於索引鍵,請使用 ONNX 模型中所述的名稱,例如 「input」。 說明具有此參數的圖形特別適用于使用變數維度輸入和輸出。

gpuDeviceId
Nullable<Int32>

要在 CPU 上執行的選擇性 GPU 裝置識別碼。 null 若要在 CPU 上執行,則為 。

fallbackToCpu
Boolean

如果發生 GPU 錯誤,請引發例外狀況或回復為 CPU。

傳回

範例

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 值不是 nullMLContext.GpuDeviceId ,則會使用此值 null

適用於

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

建立 , OnnxScoringEstimator 它會將預先定型的 Onnx 模型套用至資料 inputColumnName 行。 請參閱 OnnxScoringEstimator 以深入瞭解必要的相依性,以及如何在 GPU 上執行。

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>

要在 CPU 上執行的選擇性 GPU 裝置識別碼。 null 若要在 CPU 上執行,則為 。

fallbackToCpu
Boolean

如果發生 GPU 錯誤,請引發例外狀況或回復為 CPU。

傳回

範例

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 值不是 nullMLContext.GpuDeviceId ,則會使用此值 null

適用於

ApplyOnnxModel(TransformsCatalog, String[], String[], String, 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, 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>

要在 CPU 上執行的選擇性 GPU 裝置識別碼。 null 若要在 CPU 上執行,則為 。

fallbackToCpu
Boolean

如果發生 GPU 錯誤,請引發例外狀況或回復為 CPU。

傳回

備註

如果 gpuDeviceId 值不是 nullMLContext.GpuDeviceId ,則會使用此值 null

適用於

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

建立 , OnnxScoringEstimator 它會將預先定型的 Onnx 模型套用至資料 inputColumnName 行。 請參閱 OnnxScoringEstimator 以深入瞭解必要的相依性,以及如何在 GPU 上執行。

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[]>

要用於從 modelFile 載入的 ONNX 圖形。 對於索引鍵,請使用 ONNX 模型中所述的名稱,例如 「input」。 說明具有此參數的圖形特別適用于使用變數維度輸入和輸出。

gpuDeviceId
Nullable<Int32>

要在 CPU 上執行的選擇性 GPU 裝置識別碼。 null 若要在 CPU 上執行,則為 。

fallbackToCpu
Boolean

如果發生 GPU 錯誤,請引發例外狀況或回復為 CPU。

傳回

範例

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 值不是 nullMLContext.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[]>

要用於從 modelFile 載入的 ONNX 圖形。 若為索引鍵,請使用 ONNX 模型中所述的名稱,例如「input」。 使用此參數說明圖形特別適用于使用變數維度輸入和輸出。

gpuDeviceId
Nullable<Int32>

要在 CPU 上 null 執行的選擇性 GPU 裝置識別碼。

fallbackToCpu
Boolean

如果發生 GPU 錯誤,請引發例外狀況或回復為 CPU。

傳回

備註

如果 gpuDeviceId 值不是 nullMLContext.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[]>

要用於從 modelFile 載入的 ONNX 圖形。 若為索引鍵,請使用 ONNX 模型中所述的名稱,例如「input」。 使用此參數說明圖形特別適用于使用變數維度輸入和輸出。

gpuDeviceId
Nullable<Int32>

要在 CPU 上 null 執行的選擇性 GPU 裝置識別碼。

fallbackToCpu
Boolean

如果發生 GPU 錯誤,請引發例外狀況或回復為 CPU。

recursionLimit
Int32

選擇性,指定 Protobuf CodedInputStream 遞迴限制。 預設值為 100。

傳回

備註

如果 gpuDeviceId 值不是 nullMLContext.GpuDeviceId 則會使用 null 此值。

適用於