如何在 ML.NET 中将 ONNX 中的数据作为 float32[N,60,1] 插入

Mar*_*ato 3 .net c# .net-core ml.net onnx

我正在使用 ML.NET,我想插入float32[N, 60, 1]作为输入(如图所示)。我不知道如何传递数据。我正在尝试这个课程:

public class OnnxInput
{
    [ColumnName("lstm_input")]
    public float lstm_input { get; set; }
}

var input = new OnnxInput[length][];

// Here I load the data into the input variable

var dataView = mlContext.Data.LoadFromEnumerable(input);
var pipeline = mlContext.Transforms.
            ApplyOnnxModel(
                    modelFile: modelLocation,
                    inputColumnNames: new[] { TinyYoloModelSettings.ModelInput },
                    outputColumnNames: new[] { TinyYoloModelSettings.ModelOutput }
                );
var model = pipeline.Fit(data);
Run Code Online (Sandbox Code Playgroud)

创建此矩阵时,当我尝试将数据放入管道时,出现错误:System.ArgumentOutOfRangeException: '无法确定 IDataView 类型并为成员 SyncRoot 注册自定义类型(参数'rawType')'

尝试使用另一种方法,使用此输入类:

public class OnnxInput
{
    [ColumnName("lstm_input")]
    public float[] lstm_input { get; set; }
}

var input = new OnnxInput[realLength];

// Here I load the data into the input variable

var dataView = mlContext.Data.LoadFromEnumerable(input);
var pipeline = mlContext.Transforms.
            ApplyOnnxModel(
                    modelFile: modelLocation,
                    inputColumnNames: new[] { TinyYoloModelSettings.ModelInput },
                    outputColumnNames: new[] { TinyYoloModelSettings.ModelOutput }
                );
var model = pipeline.Fit(data);
Run Code Online (Sandbox Code Playgroud)

创建此矩阵,当我尝试将数据放入管道时出现错误:System.InvalidOperationException:“不支持可变长度输入列”

在此输入图像描述

Api*_*oud 6

变量输入错误(不支持可变长度输入列)仅意味着您的模型需要固定大小的输入。具体来说,您可以在类中[VectorType(60, 1)]的属性之上添加属性。lstm_inputOnnxInput