赞
踩
视频链接 21 卷积层里的多输入多输出通道【动手学深度学习v2】
神经网络中另外一个重要的超参数是通道数
· mnist数据集中的图片是灰度图片,只有一个通道
· 一张彩色图片是由红绿蓝三个通道组成的,所以图片在表示的时候通道数是3
例(输入是一个三维的tensor)
· 每一个通道都有对应的卷积核
· 每个通道的输入和对应通道的卷积核做卷积,然后将得到的各个通道上的输出进行叠加(对应位置上的元素相加)得到最终的结果
· 计算公式如下图所示
· 输出是单通道的,不管输入有多少个通道,输出是他们输出结果的叠加,所以始终是单通道
· 为什么要有多个输出通道?因为不管有多少个输入通道只会得到单输出通道的话是不够的
· 如果对每一个输出通道有一个三维的卷积核,这个卷积核会输出自己的通道(就相当于在三维的基础上又加了一维 o ,这一维表示输出的通道数)
· 这里输入和输出通道是没有相关性的
· 每个输出通道可以认为是在识别某一个特定的模式(特征),通过学习不同卷积核的参数来匹配某一个特定的模式
· 从某一层的角度来看,输入通道的卷积核可以将上一层得到的不同模式进行识别和组合,按照一定的权重进行相加组合,得到了组合的模式识别
· 对于一个深度的神经网络来说,下面的一些层的不同通道用来识别一些不同的局部的底层信息(边、纹理),越往上,上层会将局部的纹理组合起来,变成更加高级,较之前更加整体性的模式(特征,如耳朵、胡须等),最上面将所有识别的模式组合起来就形成了所要识别的类别(猫)
· 卷积核的高和宽都等于1,意味着它不会识别空间信息,因为他每次只看一个空间像素所以不会去识别通道中的空间信息
· 输出的值等价于将对应的输入位置上的不同通道上的值做加权和
· 1 ∗ 1 1*1 1∗1卷积核的作用就是去融合不同通道的信息可以认为是不做空间的匹配,只是在输入层直接做输入通道和输出通道的融合,等价于将整个输入拉成一个向量,通道数等于feature的数量,卷积核相当于一个co*ci的全部连接层(如:上图拉完后,Input成为 3 × 9 3 × 9 3×9 ,而Kernel成为 2 × 3 2×3 2×3,Output成为 K X = 2 × 9 KX=2×9 KX=2×9,最后reshape成为 2 × 3 × 3 2×3×3 2×3×3)
· 1 ∗ 1 1*1 1∗1的卷积层就等价于一个全连接层,不做任何的控制信息,因为全连接层不考虑空间信息它只考虑在特征维度(也就是输入通道维数)的融合
· 它是一个特殊的卷积层
· 复杂度(需要的浮点运算的程度)的计算
· 浮点数计算数量:kernel每做一次卷积需要计算 k h × k w k_h × k_w kh×kw次,最后的输出形状是 m h × m w m_h × m_w mh×mw, 这就说明kernal在原始图片上一共滑动了 m h × m w m_h × m_w mh×mw次,所以一个kernal在一个通道上最后的浮点计算数就是 k h × k w × m h × m w k_h × k_w × m_h × m_w kh×kw×mh×mw。 最后因为输入是 c i c_i ci,所以一个卷积核的shape其实是 c i × k h × k w c_i × k_h × k_w ci×kh×kw,所以总的计算浮点数还要乘以 c i c_i ci。 再一个,因为卷积核的数量是 c o c_o co,相当于把前面的再重复 c o c_o co次,至此总的浮点计算数量就是 k h × k w × m h × m w × c i × c o k_h ×k_w × m_h × m_w × c_i × c_o kh×kw×mh×mw×ci×co。
· 输入通道数不是卷积层的超参数,它是前一层的
· 所以最后的卷积核是一个4维的张量
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。