Свойства Microsoft.ML C# внутреннего класса ввода должны быть общедоступными, в противном случае возникает ошибка.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Свойства Microsoft.ML C# внутреннего класса ввода должны быть общедоступными, в противном случае возникает ошибка.

Сообщение Anonymous »

Я работаю над проектом ML.NET, в котором загружаю данные в IDataView, применяю преобразование модели ONNX, а затем получаю доступ к преобразованному выводу.
Мой класс ввода находится в той же сборке, что и мой класс вывода. и как мой класс модели. Я отмечаю свой класс ввода как внутренний. Я помечаю свойства класса ввода как внутренние, и у меня возникает ошибка. Когда я отмечаю свои свойства как общедоступные (класс по-прежнему является внутренним), это работает.
Я думал, что если класс помечен как внутренний, не будет никакой разницы, являются ли свойства/методы внутренними или общедоступными (цитата: «публичный член внутреннего класса фактически является внутренним».). Очевидно, что да.
Вот минимальный воспроизводимый пример:

Код: Выделить всё

using Microsoft.ML;
using Microsoft.ML.Data;

namespace ConsoleApp1
{
internal class InputData
{
[ColumnName("onnx::Concat_0")]
[VectorType(342)]
// public float[] XA1 { get; set; } = new float[342];  // Works

internal float[] XA1 { get; set; } = new float[342]; // Fails
}

public class OutputData
{
[ColumnName("onnx::Concat_0")]
[VectorType(342)]
public float[] XA1 { get; set; }
}

class Program
{
static void Main()
{
var mlContext = new MLContext();

var inputData = new[]
{
new InputData { XA1 = new float[342] }
};

IDataView inputDataView = mlContext.Data.LoadFromEnumerable(inputData);

// Simulate an ONNX transformation pipeline
var pipeline = mlContext.Transforms.CopyColumns(
"onnx::Concat_0",
"onnx::Concat_0"
);

var model = pipeline.Fit(inputDataView);
IDataView transformedData = model.Transform(inputDataView);

var transformed = mlContext.Data.CreateEnumerable(transformedData, reuseRowObject: false);
foreach (var item in transformed)
{
Console.WriteLine($"XA1 Length: {item.XA1.Length}");
}
}
}
}
В случае, если это поможет:
  • Я использую net8.0.
  • Я использую JetBrains Rider 2024.2.6.


Подробнее здесь: https://stackoverflow.com/questions/791 ... -otherwise
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»