“深度学习”学习日记。卷积神经网络--卷积层

2023.2.3

CNN中出现一些新的概念:填充、步幅 等,此外各层中传递的数据是有形状的,与之前的全连接层神经网络完全不同;

一、全连接层存在的问题:

全连接层神经网络使用了Affine层,在相邻的神经元全部连接在一起,输出数量可以自己任意决定;

就是这样的结构导致数据的形状被忽略了,图像通常是(通道,高,长)的3维数据,比如MNIST数据集图像,通常是(1,28,28),但是在全连接神经网络中却被排列成(1,784)的形状作为输入。

3维图像,这个形状中应该含有重要的空间信息。比如,空间上临近的像素为相似的值RGB的各个通道之间分别有密切的关联性相距较远的像素之间关联等,3维形状中可能隐匿有值提取的本质模式。但是,因为全连接层对于这样的“忽略”,将全部输入数据作为相同的神经元(同一维度的神经元)处理,所以无法使用与形状相关的信息

CNN中,有时将卷积层的输入输出数据称为 特征图 。 其中,卷积层输入被称为 输入特征图,卷积层输出 称为 输出特征图。

二、卷积运算:

卷积层处理的就是卷积运算。卷积运算相当于图像处理中的“滤波器运算”。(滤波器也被称为 卷积核)

例子:卷积运算图例,来源于教材;

对于输入数据,卷积运算以一定的间隔划定滤波器的窗口并应用。这里所说的窗口时指例子中3×3的灰色部分。如图将各个位置的 卷积核 和输入的对应元素相乘,然后在求和(有时将这个计算称为 乘积累加运算)。然后,将这个结果保存到输出的对应位置。将这过程所有位置都进行一遍,就能得到卷积运算的输出。

在全连接神经网络中,除了权重参数,还存在偏置。CNN中,滤波器的参数就对应之前的权重,也存在偏置。(图例来源于教材)

 向滤波器中加上偏置,这个值也会加到滤波器的其他元素上。

三、填充:

在进行卷积层处理之前,有时要向输入数据的周围填入固定的数据(比如 0),这称为 填充 (Padding)。

 上个图例中,填充值为0,所以大小为4×4的图像与3×3的卷积核进行卷积运算,得到的输出特征图的大小是2×2。

而现在填充值为1,4×4的图像与3×3的卷积核进行卷积运算,得到的输出特征图的大小是4×4.

所以,使用填充的主要目的是为了调整输出大小。这在进行重复地多次地卷积运算的深度网络中也是一个问题。如果填充值为0,每次卷积运算都会压缩空间,那么到某个时候输出大小就有可能变为1,导致无法在应用卷积运算。为了避免出现这样的情况,就要使用填充,将保持空间大小不变的情况下将数据传递给下一层。

四、步幅:

应用滤波器(卷积核)的位置间隔为 步幅 (Stride)。

之前的例子的步幅是都是1,如果将步幅设置为2,则应用滤波器的窗口间隔为2,例子来源于教材;

 对输入大小为(7×7)的数据,以步幅为2应用滤波器,输出大小为(3×3)

可以观察到,增大步幅后,输出大小会变小。而增大填充后,输出大小会保存或者变大。

用公式表达:假设输入大小为(H,W),滤波器(卷积核)的大小为(FH,FW),输出大小为(OH,OF);

OH =\frac{H+2P-FH}{S}+1

OW=\frac{W+2P-FW}{S}+1

当OH和OW的值无法除尽时,需要采取相应报错对策,有时因为不同的深度学习神经网络,回想最接近的整数四舍五入,不进行报错二继续学习;

五、3维数据的卷积运算:

2维形状是(高,长),3维形状是(通道,高,长)

通道方向上有多个特征图,会按通道进行输入数据和滤波器的卷积运算,并将结构相加,从而得到输出。

例子:(来源于教材)

但是,需要注意的是,在3维数据的卷积运算中,输入数据和滤波器的通道数要设置成相同的值。

六、结合方块思考:

将数据和滤波器比作长方体来考虑3维卷积;(channel,height,width)→(c,h,w)

 像这个例子输出的是一张特征图,n个卷积核就会输出n张特征图,

 输入数据通过FN个滤波器以后,输出的特征图也变成了FN个。如果将这FN个特征图汇集在一起,就可以得到形状为(FN,OH,OW)的“方块”,他传递给下一层就是CNN的处理流。

有关于卷积运算,我们也要考虑滤波器(卷积核)的数量,比如写作(output_channel,input_channel,height,width)的书写顺序。

卷积运算核全连接层一样存在偏置:

这里的偏置的形状是(FN,1,1)最后的输出数据也要加上偏置值。另外,不同形状的方块相加时,可以基于Numpy的广播功能轻松实现。

七、批处理:

神经网络的推理处理中,进行了将数据打包的批处理,之前的全连接层神经网络的实现也使用了批处理,通过批处理,还能实现按粗粒高效化和学习时对mini-batch的对应;

同理,卷积运算也能够进行对应的批处理。为此,需要将各层传递的数据保存成4维数据。

保存形式(形状):(batch_num,channel,height,width)的顺序保存数据。

如图将N个数据进行卷积运算,批处理将N次的处理汇总成1次进行;

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值