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