重新训练模型-将ITransformer转换为MulticlassPredictionTransformer

时间:2020-02-18 09:47:45

标签: c# .net ml.net

我让this question知道如何重新训练我的SdcaMaximumEntropyMulticlassTrainer,并建议我使用LbfgsMaximumEntropyMulticlassTrainer来进行训练。

因此,我实际上是在尝试从我的MaximumEntropyModelParameters中提取ITransformer,但现在我陷入了困境。这是我到目前为止所做的:

我从ITransformer创建了一个IDataView,如下所示:

var pipeline = mlContext.Transforms.Conversion.MapValueToKey()
    .Append(mlContext.Transforms.Text.FeaturizeText())
    .AppendCacheCheckpoint(mlContext);
var trainingPipeline = pipeline.Append(mlContext.MulticlassClassification.Trainers.LbfgsMaximumEntropy())
    .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));
ITransformer trainedModel = trainingPipeline.Fit(splitTrainSet);

现在我正试图通过提取像这样的参数来对其进行重新训练:

var originalModelParameters = ((MulticlassPredictionTransformer<object>)model).Model as MaximumEntropyModelParameters;
model = mlContext.MulticlassClassification.Trainers.LbfgsMaximumEntropy().Fit(transformedNewData, originalModelParameters);

代码现在正在编译,没有错误,但是当我运行它时,在originalModelParameters声明中出现了错误:

System.InvalidCastException:'无法转换类型为'Microsoft.ML.Data.TransformerChain 1[Microsoft.ML.ITransformer]' to type 'Microsoft.ML.Data.MulticlassPredictionTransformer 1 [System.Object]'的对象。'

我试图在GitHub上找到LbfgsMaximumEntropyMulticlassTrainer重新培训的一些示例,但是似乎很难找到,并且官方文档仅将示例限制在OnlineGradientDescentTrainer上。

请问如何重新训练该模型?

0 个答案:

没有答案