前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从PyTorch官方文档看多通道卷积

从PyTorch官方文档看多通道卷积

作者头像
SIGAI学习与实践平台
发布2018-12-24 14:42:15
2.4K0
发布2018-12-24 14:42:15
举报

卷积神经网络(Convolution Neural Network)是深度学习领域中的一种特征提取工具。相较于传统的全连接神经网络(Fully-Connected Neural Network),卷积神经网络具有局部连接(local connectivity) 和 参数共享(parameter sharing)的优势,在减少了参数的情况下提高了特征提取的能力,因此被广泛使用。本文从PyTorch官方文档中关于torch.nn.conv2d的内容出发来解释多通道卷积的概念.

多通道卷积计算过程展开

以下内容是PyTorch文档中关于torch.nn.conv2d 的描述

Applies a 2D convolution over an input signal composed of several input planes.

In the simplest case, the output value of the layer with input size (?,?in,?,?)and output (?,?out,?out,?out)can be precisely described as :

where ⋆ is the valid 2D cross-correlation operator, N is a batch size, C denotes a number of channels, H is a height of input planes in pixels, and W is width in pixels.

由于深度学习的库为了尽可能的发挥GPU加速计算的功能,都是通过批量计算卷积来提高计算效率,因此输出和输出的第一个维度是相同的,都是?。接下来,我们将问题简化,仅仅关注某一个对于输入张量的卷积计算。下文中我们将输入张量中的某个通道成为输入通道(input channel),将输出向量中的某个通道成为输出通道(output channel)。???(Ni,?out)是第?个输出张量中某个输出通道的结果。从公式中的求和操作

以看出,对于每一个输出通道的结果,需要对每个输入通道内的内容进行卷积计算,因此对于每个输出通道,其与输入通道是一对多的关系。

接下来我们看公式中的weight(?outj,?)⋆input(Ni,?)部分 ,这部分进行的是某个输入通道与某个卷积核的卷积操作。PyTorch文档中指明所执行的操作其实计算的是卷积核(kernal)与输入张量的互相关(cross correlation)。互相关⋆与卷积的区别是计算卷积之前需要将卷积核旋转180度之后再计算。通过将卷积计算简化为互相关的计算,可以减少计算过程中不必要的操作以及开销。 由于在梯度后向传播的过程中卷积的参数是可更新的,在此情况下,对于提取特征来说,卷积操作和互相关是等价的,在TensorFlow 中,卷积计算部分也被简化为计算互相关,在其他开源库中也采用了类似的处理方式。接下来我们以对图像的卷积计算来解释对于某个输出通道如何计算其结果,下图是对一个3×3的图片使用3×3的卷积核进行计算的展开图,输出通道的数量为3:

(?进入小程序 动手训模型)

从上图可以看出,对于输入通道数为3的张量,当有3个3×3×3卷积核时,输出了3个不同的特征图。读者需要注意的是,卷积核的维度是由是由输入张量的通道数决定的,如果卷积核的大小为?,则卷积核的维度为?×?×?in,而这正是该卷积层对于某个输出通道需要学习的参数数量。整个卷积层关于卷积核的参数量为?out×?in×?×?,偏置对应的参数量为?out

对于上图,我们在PyTorch中构建一个相同功能的卷积层,其参数量的大小如下图所示:

多通道卷积输出维度

通过以上部分内容,我们了解了卷积核展开后的计算过程以及各层的参数量,接下来我们来看输出张量的维度计算。对于(?,?in,Hin,Win)的输入,其输出维度为(?,?out,Hout,Wout),其中Hout,Wout由以下公式确定:

从以上公式可以看出,输出张量的维度由输入向量的维度,padding的大小,膨胀系数的大小,卷积核的大小,步长共同决定。

以VGG16 为例计算网络的参数量

接下来我们针对上图中红色矩形框中的内容来计算网络的参数量:

红框内部的网络结构中,有13个卷积层和3个全连接层是有参数的,总共是16个带参数的层。所有的的参数加起来大约有138M,而其中第一个全连接层的参数量就有100M,由此可以看出卷积层相对于全连接层能节省很多的参数。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SIGAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
批量计算
批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档