【问题标题】:How insert data in an ONNX as float32[N,60,1] in ML.NET如何在 ML.NET 中将 ONNX 中的数据作为 float32[N,60,1] 插入
【发布时间】:2021-04-06 13:36:20
【问题描述】:

我正在使用 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);

创建此矩阵时,当我尝试将数据放入管道时出现错误:System.ArgumentOutOfRangeException: 'Could not determine an IDataView type and registered custom types for member SyncRoot (Parameter '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);

创建此矩阵时,当我尝试将数据放入管道时出现错误:System.InvalidOperationException: 'Variable length input columns not supported'

【问题讨论】:

    标签: c# .net .net-core ml.net onnx


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      • 2021-02-01
      • 2017-03-26
      • 2019-11-30
      • 2023-01-25
      • 2021-07-09
      • 1970-01-01
      相关资源
      最近更新 更多