您当前的位置: 首页 >  .net

寒冰屋

暂无认证

  • 0浏览

    0关注

    2286博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C#中的深度学习:ML.NET中具有预训练模型的硬币识别

寒冰屋 发布时间:2020-12-15 21:21:02 ,浏览量:0

在这里,我们看一下转移学习,调整预定义的CNN以及使用模型生成器扩展来训练我们的模型以解决硬币识别问题。

这次我们将使用ML.NET而不是Keras.NET。为什么不使用Keras.NET?尽管Keras.NET非常简单易学,并且虽然确实包含了前面提到的预定义模型,但其简单性仍使我们无法自定义CNN体系结构以适应我们的问题。

ML.NET是一个免费的Microsoft机器学习框架,旨在使用C#和F#进行开发。最重要的是,我们可以将ML.NET与Azure结合使用,这意味着我们可以使用基于云的基础结构来训练我们的模型。让多个虚拟机以分布式方式运行我们的代码可以使训练更快、更准确。

为什么预先训练的CNN如此有价值?因为有人花费大量时间和资源来训练他们,所以我们可以利用这一点。我们可以重用嵌入在为网络计算的权重中的知识,并将其重新应用于类似的问题。也就是说,它们不仅可以应用于CNN最初要解决的问题,而且还可以应用于更多问题。此技术称为转移学习。它可以为我们节省大量的训练时间,并且可以大大改善获得的结果。

在转移学习中,我们不像以前那样从头开始。取而代之的是,我们从具有预定义体系结构的已知模型开始,并在首次请求模型时下载计算出的权重。流行的模型包括Inception,ResNet和VGG16等。

要针对我们的问题调整预定义的CNN,我们必须做三件事。首先,我们必须将输入层的形状更改为数据集中图像的尺寸。其次,我们需要至少更改输出层,以便模型具有与数据集相同数量的类。第三,我们必须调整模型以使其知道我们对训练预定义模型的层次不感兴趣。完成这些步骤后,我们可以将模型训练或拟合到给定的数据集。

让我们开始吧。在Visual Studio中,转到“扩展” >“管理扩展”,然后浏览ML.NET Model Builder。

我们还需要安装Nuget软件包ML.NET。

为了训练硬币识别问题的模型,我们将使用“模型构建器”扩展。

使用此工具,我们可以轻松地设置数据集并训练模型,顺便说一下,添加到模型构建器的Auto ML功能将自动选择该数据集。自动化机器学习(Auto ML)是自动化耗时的机器学习模型开发任务。因此,“模型构建器”将为我们简化准备数据集的过程,以及选择预训练模型和所有相关参数的过程。关于选择的预训练模型的一件事是,仅最后一层将被重新训练;所有其他人保持权重。

对于数据集,唯一的要求是将其组织在文件夹中,使得文件夹名称是其中所有图像的类或标签。当我们到目前为止使用的硬币数据集输入到模型构建器中时,AutoML引擎选择ResNet作为经过预训练的体系结构来解决我们的问题。

训练完成后,我们可以预测新的输入数据,甚至可以获取与用于预测的模型相对应的代码。

只需要很少的工作,我们就可以在几乎没有该领域任何先验知识的情况下进行ML,只需通过UI进行所有操作,最后选择,单击并获取代码即可。

至此,我们完成了使用C#进行硬币识别的系列文章。我希望你喜欢它!

关注
打赏
1665926880
查看更多评论
立即登录/注册

微信扫码登录

0.0447s