在机器学习的世界里,ML.NET是一个简单易学的框架,它由微软推出,旨在使用C#和F#进行开发。它的一大优势是能够与Azure云服务结合使用,这意味着可以利用云基础设施来训练模型。通过在多个虚拟机上分布式运行代码,可以加快训练速度并提高准确性。
预训练的卷积神经网络(CNN)非常有价值,因为它们经过了大量的时间和资源训练,可以利用这些已经计算好的权重。这些权重嵌入了网络的知识,并且可以重新应用于类似的问题。这种技术被称为迁移学习,它可以节省大量的训练时间,并显著提高结果。
在迁移学习中,并不像以前那样从头开始。相反,从一个已知的模型开始,这个模型具有预定义的架构和计算好的权重,这些权重在模型第一次被请求时下载。流行的模型包括Inception、ResNet和VGG16等。
为了调整预定义的CNN以适应问题,必须做三件事。首先,必须将输入层的形状更改为数据集中图像的尺寸。其次,需要至少更改输出层,以便模型具有与数据集相同数量的类别。第三,必须调整模型,让它知道对训练预定义模型的层不感兴趣。完成这些步骤后,可以训练或拟合模型到给定的数据集。
让开始吧。在Visual Studio中,转到“扩展”>“管理扩展”,然后搜索“ML.NETModel Builder”。还需要安装Nuget包ML.NET。
为了训练模型来识别硬币问题,将使用Model Builder扩展。使用这个工具,可以轻松地设置数据集并训练模型,顺便说一句,模型将由Model Builder中添加的Auto ML功能自动选择。自动化机器学习(Auto ML)是自动化机器学习模型开发的耗时任务。因此,Model Builder将简化准备数据集和选择预训练模型以及所有涉及的参数的过程。关于选定的预训练模型的一点是,只有最后一层会被重新训练;所有其他层都保持它们的权重。
对于数据集的情况,唯一的要求是它被组织在文件夹中,以便文件夹名称是里面所有图像的类别或标签。当迄今为止使用的硬币数据集输入到Model Builder时,AutoML引擎选择了ResNet作为用于问题的预训练架构。