.net - 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() 。因为我只想使用原始加载的模型而不进行修改。它已经由谷歌用数百万张图片训练过,应该足以满足我的所有需求。
谢谢你的建议!
解决方案
感谢您的回答,但它并没有解决我最初的问题,即未经培训我无法获得模型。
所以对于有同样问题的其他人,我找到了一种解决方法:我没有使用 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 模型。
我希望这对那些也在寻找一种简单的方法来加载预训练模型而无需重新训练的人有所帮助。
推荐阅读
- oracle - 检查 Count 的结果是否为零 Oracle
- python - 在我的 anaconda 的环境张量中,我有两个 pips 。如何卸载旧版本?我的操作系统是windows10
- kubernetes - 如何检查特定脚本执行是否由 Kubernetes pod 完成
- node.js - 如何使用 node.js 连接到 XMPP 服务器
- git - 如何取消跟踪未从 git 存储库中删除的特定文件
- hibernate - org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“userController”的bean时出错
- ruby-on-rails - 在“Heroku local -f Procfile.dev”推荐之后如何定位 Gemfile 或 bundle
- html - 为什么底部有一些多余的水垢?如何删除那些?
- entity-framework - ...可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束
- jquery - 防止背景页面在 Bootstrap 中滚动