在ML.NET中指定培训时间的位置

时间:2020-06-17 23:59:26

标签: c# ml.net ml.net-model-builder

我正在评估ML.NET Model Builder(预览版)16.1.0.2027905。当我去训练时,Builder让我指定“训练时间(秒)”(参见图片):

enter image description here

但是,当我进入步骤6并生成代码时,我似乎找不到指定“训练时间”的位置...

ML.NET Builder在ModelBuilder.cs文件中自动为我创建此功能:

    public static ITransformer TrainModel(MLContext mlContext, IDataView trainingDataView, IEstimator<ITransformer> trainingPipeline)
    {
        Console.WriteLine("=============== Training  model ===============");

        ITransformer model = trainingPipeline.Fit(trainingDataView);

        Console.WriteLine("=============== End of training process ===============");
        return model;
    }

但是我在调​​试器中查看了mlContext,trainingDataView,trainingPipeline对象,但没有立即看到我可以在哪里指定训练时间。另外,我在全局文本搜索中搜索了3600(这是我接受培训的时间),但没有找到那种有趣的代码。

ML.NET中是否有一些简单的方法可以在几秒钟内指定“训练时间”?

我问这个问题是因为我想以用户指定的训练间隔手动调用ModelBuilder.TrainModel。我不想总是需要使用ML.NET Builder GUI重新训练我的模型。

1 个答案:

答案 0 :(得分:2)

模型构建器在后台使用AutoML。它产生的代码是纯ML.NET API代码,因此它没有办法指定培训时间。

如果要使用它,则需要使用AutoML API。这样就可以指定训练时间。这是the doc进行显示的内容,但是类似于以下代码:

var settings = new RegressionExperimentSettings
{
    MaxExperimentTimeInSeconds = 20,
};

这里是full sample中使用的this video

希望有帮助!