Я пытаюсь обучить и предсказать модель с несколькими характеристиками.Мы назовем мои данные «гистограммой» с целевым значением с плавающей запятой и от Sensor1
до Sensor6
, которые равны float[64]
.
Данные загружаются из CSV с первым столбцом в качествеЦель, а затем столбцы 1-64 Sensor1, 65-129 Sensor2 и т. Д.
Класс гистограммы:
class Histogram
{
[LoadColumn(0)] public float Target;
[LoadColumn(1, 64), ColumnName("Sensor1")]
public float[] Sensor1;
[LoadColumn(65, 129), ColumnName("Sensor2")]
public float[] Sensor2;
[LoadColumn(130, 193), ColumnName("Sensor3")]
public float[] Sensor3;
[LoadColumn(194, 257), ColumnName("Sensor4")]
public float[] Sensor4;
[LoadColumn(258, 321), ColumnName("Sensor5")]
public float[] Sensor5;
[LoadColumn(322, 385), ColumnName("Sensor6")]
public float[] Sensor6;
}
Обучение завершается, но при создании механизма прогнозирования с:
var predictor = trainedModel.CreatePredictionEngine<Histogram, PredictedTarget>(mlCtx);
выдает это исключение:
System.ArgumentOutOfRangeException: 'Schema mismatch for input column 'Sensor1': expected scalar or known-size vector of R4, got variable-size vector
Parameter name: inputSchema'
Я создаю конвейер обработки как:
IDataView baseTrainingDataView = mlCtx.Data.LoadFromTextFile<Histogram>(trainDataPath, hasHeader: true, separatorChar: ',');
var dataProcessPipeline = mlCtx.Transforms
.CopyColumns(DefaultColumnNames.Label, nameof(Histogram.Target))
.Append(mlCtx.Transforms.Normalize(nameof(Histogram.Sensor1), "Sensor1"))
.Append(mlCtx.Transforms.Normalize(nameof(Histogram.Sensor2), "Sensor2"))
.Append(mlCtx.Transforms.Normalize(nameof(Histogram.Sensor3), "Sensor3"))
.Append(mlCtx.Transforms.Normalize(nameof(Histogram.Sensor4), "Sensor4"))
.Append(mlCtx.Transforms.Normalize(nameof(Histogram.Sensor5), "Sensor5"))
.Append(mlCtx.Transforms.Normalize(nameof(Histogram.Sensor6), "Sensor6"))
.Append(mlCtx.Transforms.Concatenate(DefaultColumnNames.Features, "Sensor1", "Sensor2", "Sensor3", "Sensor4", "Sensor5", "Sensor6"));
Я на самом деле не уверен, какую дополнительную информацию предоставить, потому чтоэто моя первая попытка с ML.NET.Я буду редактировать больше по мере необходимости!Спасибо.