首页 > 解决方案 > ML.NET:为什么我必须训练预训练模型?

问题描述

我想使用预训练模型(如 inceptionV1/V3)进行图像分类。

所以我在 ML.NET 中建立了一个管道,我在其中加载了这个 TensorFlow 模型。但是在每个教程中,我发现你必须在之后训练那个模型才能得到一个模型。

例如这里: https ://docs.microsoft.com/en-US/dotnet/machine-learning/tutorials/image-classification

=> 使用上面加载的数据训练模型: => ITransformer model = pipeline.Fit(trainingData);

为什么不能在没有训练数据的情况下只调用 Fit() 。因为我只想使用原始加载的模型而不进行修改。它已经由谷歌用数百万张图片训练过,应该足以满足我的所有需求。

谢谢你的建议!

标签: .nettensorflowmachine-learningml.net

解决方案


感谢您的回答,但它并没有解决我最初的问题,即未经培训我无法获得模型。

所以对于有同样问题的其他人,我找到了一种解决方法:我没有使用 ML.NET 来加载初始模型,但我现在使用 TensorFlow.NET nuget 包来执行此操作。在那里我可以加载一个预训练模型并使用它。

这是我使用的示例项目的链接: https://github.com/SciSharp/SciSharp-Stack-Examples/tree/master/src/TensorFlowNET.Examples/ImageProcessing 有两个很好的示例可以满足我的需要:

  • 文件 ImageRecognitionInception.cs 包含一个用于图像分类的 InceptionV1 模型(注意:在顶部的评论中有站立的 InceptionV3 但这是错误的。这个文件肯定使用 InceptionV1 模型 - 您可以通过图像分辨率轻松看到这一点224 像素。InceptionV3 使用 299 像素的图像)。
  • 文件 InceptionArchGoogLeNet.cs 包含一个用于图像分类的 InceptionV3 模型。

我希望这对那些也在寻找一种简单的方法来加载预训练模型而无需重新训练的人有所帮助。


推荐阅读