从系列:用MATLAB进行深度学习
加布里埃尔哈,MathWorks公司
本演示使用MATLAB®从零开始训练CNN对四种不同动物类型的图像进行分类:猫、狗、鹿和青蛙。图像来自CIFAR-10数据集(https://www.cs.toronto.edu/~kriz/cifar.html)。
记录:2017年4月12日
嗨。我的名字是加布里埃尔·哈,我在这里向你们展示MATLAB是如何直接地从头创建一个深度神经网络的。我们的演示有特定的应用到图像处理和识别,但我们觉得图像是很容易联系起来。这是一个非常著名的神经网络应用。最重要的是,我们想让每个人都能接触到深度学习,这样你就能得到我们展示给你的所有东西,并以此为基础,开始使用你自己的网络。
所以对于那些非常熟悉培训网络,随着技术使他们更准确,MATLAB对你将是伟大的,因为如你所愿,我们为您提供直观的语法和功能将让你轻松实现改进。你们新深度学习领域,想感受这个技术,你可以马上做的程度可能是有限的图像识别,但我相信它会为你提供足够多的资料开始,与神经网络有很多的乐趣。
因此,这里就是我们打算做的。我们要培养网络识别四种不同的动物:猫,狗,青蛙和鹿。要做到这一点,我们要每个动物的图片介绍给我们的网络,定义我们的网络层,然后,用一个单一的代码行,告诉MATLAB训练和从头开始创建我们的网络。然后,我们将通过展示其新的图像,它以前没有见过测试我们的网络,并检查其准确性。
为了进行设置,我们将进入这个目录并将每个动物的5000张图片绘制到单独的文件夹中。现在,如果你计算一下,总共有2万张图片。对于那些对此感兴趣的人来说,你可能会想,“等等,你希望我看这个视频,然后在我开始之前管理20,000张图片?”“好吧,如果你愿意,你可以这样做,或者你可以像我们那样做——利用已经完成的工作。
在这种情况下,我们得到了我们所有的图像从可公开获得的CIFAR-10数据集,这真的只是需要下载和解压一个大的ZIP文件。所以,值得庆幸的是,设立这个演示只依赖于你的网络速度和处理器供电方面,分别。话虽这么说,培养一个从无到有的网络确实需要相当多的数据,所以总是找机会建立在这样的演示以前的工作。
让我们来看看核心代码需要执行我们的培训。你可以看到这部分,它指定的动物名称,然后这部分,指着MATLAB到包含训练数据的文件夹。并尽可能设置而言,仅此而已。
所以,现在我们要告诉MATLAB我们要如何深层网络的培训。每个神经网络具有一系列的层,它具有更多的层,更深层次的网络。现在,每个层取入数据从之前的层,转换成数据,然后将其传递。因此,第一层采用原始输入图像中,并通过我们获得了最后一层的时候,它会希望吐出动物的正确名称的原始形象。
这里是我们为这个例子选择实现的图层。对于刚刚接触这个领域的人来说,您可能不希望能够从头开始创建所有这些层。另一方面,如果您是一个深度学习专家,我们将为您提供精确实现您的层的工具。
但是,在这两种情况下,如果你想建立过这个例子,只是换成你自己的训练数据,调整图层,如果你觉得你能够胜任工作,并用一行代码,MATLAB会给你一个神经网络培训了任何你想要的,无论是动物还是你的朋友,这是完全没有,我没有在上班时间令人毛骨悚然的事情面孔。
所以,当然,它会需要一些时间来训练。如果你只是有CPU,它会需要一段时间,但如果你有一个邪恶的打扮出GPU喜欢这款机器,它需要大约45秒。一旦完成,我们可以继续测试我们的网络。
让我们先从基本超强。我们有一个测试组包含每个动物再次,方便地从CIFAR-10得到的1000图像。正如你所看到的,它的设置方式不尽相同目录明智作为训练集。但最重要的是,网络是没有经过培训的这些图像。
我们将显示一个图像以及网络认为它是什么。这是一只鹿。正确的。这是一只狗。也是正确的。这是一只青蛙。网络认为它是一只猫。
我很确定你现在已经明白了,所以让我们加快这个过程。我们将用MATLAB运行这段代码,它将测试我们测试集上的所有图像。然后它将按百分比告诉我们网络的总体运行情况。数字是-请转鼓-准确度约75%。对于45秒的训练来说,这不算太糟。
作为一个警告,你会发现,CIFAR-10图像是非常小的,而我们网络的第一层,需要通过32 32由3图像,而我们的代码并调整图片的大小,你必须决定是否这是有道理的,你的数据。但是,如果你有一大堆要与神经网络图像分类的,这里是如何用MATLAB做到这一点,你可以马上开始。
单击下面描述中的链接以获得代码并查看关于使用“神经网络工具箱”的文档。不要犹豫给我们留下问题或评论。和往常一样,感谢收看。
嘿,看看加布里埃尔创建的这个应用程序。把它指向我。
老兄,这太诡异了。
你也可以从以下列表中选择一个网站:
选择最佳的网站性能的中国网站(在中国或英文)。其他MathWorks的国家网站都没有从您的位置访问进行了优化。