我正在尝试根据新数据重新训练模型。
神经网络学习算法允许根据文档进行再训练。
//формируем данные для обучения из коллекции
var trainingDataView =
mlContext.Data.LoadFromEnumerable(trainDataFromDb.TrainData);
//формируем данные в формате для обучения
var trainingPipeline = mlContext.Transforms.Conversion.MapValueToKey(inputColumnName: "IdCategory", outputColumnName: "Label")
.Append(mlContext.Transforms.Text.FeaturizeText(inputColumnName: "DescriptionProduct", outputColumnName: "DescriptionProductFeaturized"))
.Append(mlContext.Transforms.Concatenate("Features", "DescriptionProductFeaturized"))
.Append(mlContext.MulticlassClassification.Trainers.LbfgsMaximumEntropy())
.Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));
//обучаем нейросеть
ITransformer trainedModel = trainingPipeline.Fit(trainingDataView);
//используем FileStream
using (var fileStream = new FileStream(FullPathModelNeural, FileMode.Create, FileAccess.Write, FileShare.Write))
{
//сохраняем обученную модель нейронной сети
mlContext.Model.Save(trainedModel, trainingDataView.Schema, fileStream);
}
神经网络处理分配给它的任务。
但是,只要我想对其进行重新培训,就使用以下代码:
//загружаем обученную модель
var trainedModelFromFile = mlContext.Model.Load(FullPathModelNeural, out var modelSchema);
//извлекаем параметры обученной модели
var originalModelParameters = ((ISingleFeaturePredictionTransformer<object>)trainedModelFromFile).Model as MaximumEntropyModelParameters;
//формируем данные для обучения из коллекции
var trainingDataView = mlContext.Data.LoadFromEnumerable(trainDataFromDb.TrainData);
//дообучаем модель с учетом новых данных
var retrainedModel = mlContext.MulticlassClassification.Trainers.LbfgsMaximumEntropy().Fit(trainingDataView, originalModelParameters);
//используем FileStream
using (var fileStream = new FileStream(FullPathModelNeural, FileMode.Create, FileAccess.Write, FileShare.Write))
{
//сохраняем обученную модель нейронной сети
mlContext.Model.Save(retrainedModel, modelSchema, fileStream);
}
我得到一个例外。无法将对象类型Microsoft.ML.Data.TransformerChain [Microsoft.ML.ITransformer]强制转换为类型Microsoft.ML.ISingleFeaturePredictionTransformer [System.Object] 在这行代码中
var originalModelParameters = ((ISingleFeaturePredictionTransformer<object>)trainedModelFromFile).Model as MaximumEntropyModelParameters;
请帮我了解如何正确地重新训练神经网络
答案 0 :(得分:1)
问题可能出在保存模型的方式上,即您不仅保存了估算器。
类似的示例可能会有所帮助:
=MEDIAN(IF($A$6:$A$200=$L$5,D6:D200))