我使用的是 NuGet 包 Microsoft.ML(1.4.0)和 SciSharp.TensorFlow.Redist(1.15.0)
初始训练和保存模型运行正常
var options = new Microsoft.ML.Vision.ImageClassificationTrainer.Options(){ FeatureColumnName = "Image", LabelColumnName = "LabelAsKey", Arch = Microsoft.ML.Vision.ImageClassificationTrainer.Architecture.InceptionV3, Epoch = 50, BatchSize = 10, LearningRate = 0.01f, MetricsCallback = (metrics) => Console.WriteLine(metrics), ValidationSet = testDataView};var pipeline = mlContext.MulticlassClassification.Trainers.ImageClassification(options) .Append(mlContext.Transforms.Conversion.MapKeyToValue( outputColumnName: "PredictedLabel", inputColumnName: "PredictedLabel"));ITransformer trainedModel = pipeline.Fit(trainDataView);mlContext.Model.Save(trainedModel, trainDataView.Schema, "C:/Temp/model.zip")
使用模型进行预测也运行正常
var loadModel = mlContext.Model.Load("C/Temp/Model.zip", out var modelInputSchema)var PredictionEngine = mlContext.Model.CreatePredictionEngine<InMemoryImageData, ImagePrediction>(loadModel);prediction = PredictionEngine.Predict(image);
但是,如果我想用更多的图像继续训练 model.zip 文件,而不从头开始重新训练基础模型,我该怎么做?
我是否可以再次调用 .Fit()
来使用加载的模型?
回答:
ML.NET 不支持恢复图像分类训练器的训练。目前,仅支持恢复训练的训练器如下:https://learn.microsoft.com/en-us/dotnet/machine-learning/how-to-guides/retrain-model-ml-net