我让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
上。
请问如何重新训练该模型?