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