首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PyTorch可视化理解卷积神经网络

sefd

随着卷积神经网络的发展,机器已经成功地在理解,识别图像中的特征和对象方面达到了99%的准确率。如果你是一个深度学习爱好者,你一定了解像Tensorflow和PyTorch这样的杰出深度学习框架,通过框架可以轻松的构建你的深度学习模型。然而存在一个问题是:数据如何通过神经网络的网络层以及计算机如何从中学习?下面我们就来看看卷积神经网络的可视化效果。

卷积神经网络

CNN是一种特殊的神经网络,它是由YanLeCunn在1998年为图像识别量身打造的,现在CNN可用于语音识别,图像分割和文本处理等多个领域。在卷积神经网络之前,多层感知器已被用于构建图像分类器。图像分类是指从多波段(彩色,黑白)光栅图像中提取信息类的任务。多层感知器需要更多的时间和空间来查找图片中的信息,因为每个输入要素都应与下一层中的每个神经元连接。而CNN将每个神经元连接到输入图像的局部区域。通过允许网络的不同部分专门处理诸如纹理或重复模式的高级特征来最小化参数的数量。

比较MLP和CNN

多层感知器的输入层的条目总数将为784,因为输入图像的大小为28x28 = 784(正在考虑MNIST数据集)。网络应该能够预测给定输入图像中的数字,这意味着输出可能属于以下任何类别,范围从0-9(1,2,3,4,5,6,7,8,9) )。在输出层,我们返回类别分数,比如说给定输入是具有数字“3”的图像,然后在输出层中,相应的神经元“3”与其他神经元相比具有更高的类别分数。这里又出现了一个问题,“ 我们需要包含多少个隐藏层,每个神经元应该包含多少神经元?“在这种情况下,我们提供一个编码MLP的例子,

上面的代码片段使用名为Keras的框架实现(暂时忽略语法)。它告诉我们第一个隐藏层中有512个神经元,它们连接到形状784的输入层。隐藏层后面是一个丢失层,它克服了过度拟合的问题。0.2表示在第一个隐藏层之后不考虑神经元的可能性为20%。我们再次添加第二个隐藏层,其具有与第一个隐藏层(512)中相同数量的神经元,然后再添加一个丢弃层。最后,使用包含10个类的输出层结束这组图层。具有最高值的该类将是模型预测的数量。

这是在定义所有层之后多层网络的样子。这种多层感知器的一个缺点是连接完整(完全连接)以供网络学习,这需要更多的时间和空间。MLP只接受向量作为输入。

卷积不使用完全连接的层。它们使用稀疏连接的层 - 它们接受矩阵作为输入,从而优于MLP。输入功能连接到本地编码节点。在MLP中,每个节点都有责任了解整个画面。在CNN中,我们将图像分解为区域(像素的小局部区域)。每个隐藏节点必须向输出层报告,其中输出层将接收的数据组合以查找模式。下面是图层如何在本地连接的图像。

现在让我们看看CNN如何在图片中提取信息。在CNN中,我们使用不同的层,每层保存图像中的特征,例如,考虑狗的图片,每当网络需要对狗进行分类时,它应该识别所有的特征,如眼睛,耳朵,舌头,腿这些功能使用过滤器和内核在网络的本地层中进行细分和识别。

图像像素表示

计算机中使用一组位于0到255范围内的像素值来解释图像,每个像素代表一种颜色的强度。0表示黑色,255表示白色,黑色和白色的其他变化,即灰色位于其间。彩色图像有三个通道,红色,绿色和蓝色。它们代表3种颜色(3D矩阵)的强度。输入图像示例

滤波器

在CNN中通过卷积层来提取图像原始信息,即边缘,轮廓和其他低级特征。然后为图像的识别过程提供数据信息。我们首先提取低级特征,然后提取中级特征和高级特征。滤波器提供了一种提取用户需要的信息的方式,而不是盲目地传递数据,因为计算机不会理解图像的结构。在初始情况下,可以通过考虑特定滤波器来提取低级特征。这里的滤波器也是一组像素值,类似于图像。可以理解为连接卷积神经网络中的层的权重。这些权重或滤波器与输入相乘以得到中间图像,其描绘了计算机对图像的部分理解。

让我们看一个示例来理解的作用。

在PyTorch中可视化CNN

现在我们已经拥有构建CNN的完整意识形态,现在让我们使用Facebook的PyTorch框架实现CNN 。

步骤1:加载输入图像。(这里我们使用Numpy和OpenCV)

第2步:可视化滤波器

让我们可视化滤波器,以更好地了解如何使用这些滤波器

第3步:定义CNN

该CNN具有卷积层和最大池层,并且使用上述过滤器初始化权重,

第4步:可视化滤波器

快速浏览一下所使用的过滤器,

第5步:跨层过滤输出

在CONV和POOL层输出的图像如下所示,

Conv Layers

汇集图层

原文地址:

https://towardsdatascience.com/understanding-convolutional-neural-networks-through-visualizations-in-pytorch-b5444de08b91

1

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190120A0991D00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券