从系列中:基于MATLAB的深度学习
盖伯瑞尔哈,MathWorks
这个演示使用MATLAB®训练有线电视新闻网从头开始对四种不同动物类型的图像进行分类:猫、狗、鹿和青蛙。图像使用CIFAR-10数据集(https://www.cs.toronto.edu/~kriz/cifar.html).
记录日期:2017年4月12日
嗨。我的名字是Gabriel Ha,我在这里向你们展示MATLAB如何简单地从头开始创建一个深度神经网络。我们的演示有特定的应用程序到图像处理和识别,但我们觉得图像很容易联系起来。这是神经网络的一个广为人知的应用。最重要的是,我们想让每个人都可以使用深度学习,这样你就能得到我们展示给你的所有东西,并在它们的基础上进行构建,开始使用你自己的网络。
因此,对于那些非常熟悉培训网络以及使其更精确的技术的人来说,MATLAB将非常适合你,因为正如你所期望的那样,我们为你提供直观的语法和函数,让你能够轻松地实现你的改进。对于那些刚进入深度学习领域的人来说想要用这项技术让你的脚湿润,你可以立即做的范围可能仅限于图像识别,但我相信它将为你提供足够的材料,让你开始使用神经网络,并从中获得很多乐趣。
这就是我们要做的。我们想训练一个网络来识别四种不同的动物:猫、狗、青蛙和鹿。为此,我们将向我们的网络引入每种动物的图像,定义我们的网络的层次,然后,使用一行代码,告诉MATLAB从头开始训练和创建我们的网络。然后,我们将通过向它展示之前从未见过的新图像来测试我们的网络,并检查其准确性。
为了设置,我们要进入这个目录,在不同的文件夹中绘制每种动物的5000张图片。如果你算一下,总共有2万张图片。对于那些有兴趣尝试的人来说,你可能会想,“等等,所以你想让我看这个视频,然后在我开始之前就去策划2万张图片?”如果你想的话可以,或者你可以这样做我们确实这样做了,利用已经完成的工作。
在本例中,我们从公开可用的CIFAR-10数据集获得所有图像,这实际上只涉及下载和提取一个大ZIP文件。因此,值得庆幸的是,设置这个演示只依赖于您的网络速度和处理器能力。也就是说,从头开始训练一个网络确实需要相当多的数据,所以总是寻找机会在之前的工作上构建,比如这个演示。
让我们来看看执行培训所需的核心代码。您可以看到这一部分,它指定了动物的名称,然后这一部分,指向包含训练数据的文件夹。就设置而言,就是这样。
现在我们要告诉MATLAB我们希望如何训练深度网络。每个神经网络都有一系列的层,层越多,网络就越深。现在,每一层都从上一层获取数据,转换数据,然后将其传递下去。第一层接收原始输入图像,当我们到达最后一层时,它很可能会给出原始图像中动物的正确名称。
下面是我们为本例选择实现的层。对于那个些对这个领域完全陌生的人来说,你们不可能从零开始想出所有这些层。另一方面,如果您是深度学习专家,我们将为您提供精确实现层的工具。
但是在任何一种情况下,如果你想建立这个例子,只要用你自己的数据替换训练数据,如果你觉得自己能胜任任务,调整图层,用一行代码,MATLAB就会给你一个神经网络训练你想要的任何东西,无论是动物还是你朋友的脸,这完全不是我在公司上班时间做的令人毛骨悚然的事情。
所以当然,训练需要一些时间。如果你只有CPU,这需要一段时间,但是如果你有一个像这台机器一样的精心设计的GPU,它需要大约45秒。完成后,我们可以继续测试我们的网络。
让我们从最基本的开始。我们有一组测试图像,包含每种动物的1000个图像,同样,从CIFAR-10获得的很方便。如你所见,它的设置方式和训练集的目录设置方式完全一样。但最重要的是,网络并没有对这些图像进行训练。
我们将显示一个图像以及网络认为它是什么。这是一只鹿。正确的。这是一只狗。也是正确的。这是一只青蛙。电视台认为那是一只猫。
我很确定你现在明白了,所以让我们加快这一过程。我们让MATLAB运行这段代码,测试我们测试集上的所有图像。然后它会告诉我们网络整体的运行情况。数字是鼓滚动,请大约75%的准确率。嘿,45秒的训练,这还不算太糟糕。
需要说明的是,您会注意到CIFAR-10图像非常小,而我们网络的第一层需要32 * 32 * 3的图像。虽然我们的代码确实会调整图像的大小,但您必须确定这是否对您的数据有意义。但如果你有一大堆想用神经网络分类的图像,这是如何用MATLAB来做的,你可以马上开始。
单击下面描述中的链接以获得代码,并查看有关使用神经网络工具箱的文档。请随时给我们留下问题或评论。和往常一样,感谢收看。
嘿,看看Gabriel创建的这个应用程序。把它指向我。
老兄,这太诡异了。
您还可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。