卷积神经网络——padding的理解

原文链接:https://blog.csdn.net/baidu_36161077/article/details/81165531

首先看一下以下代码吧!

from keras.layers import Conv2D,Dense,Flatten
from keras.models import Sequential
model = Sequential()
model.add(Conv2D(filters  = 32,kernel_size = [3,3],strides = [1,1],padding = 'same',input_shape = [6,6,3]))
model.add(Flatten())
model.add(Dense(units = 10,activation = 'softmax'))
model.compile()
model.fit()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

问题的来源是这样的,卷积层的基本实现原理不难,但是当看到代码中的参数padding的时候感觉不是很明白,这里简单写一下自己的理解。

卷积
上图是简单的卷积处理方式,假设原始图片的尺寸是6x6,卷积核的大小是3x3,滑动步长为1,那么按照卷积核的滑动方式,我们可以得到feature map的尺寸为 (6−3+1)×(6−3+1)(6−3+1)×(6−3+1),但是这样的处理方式会有两个缺点:

1.卷积后的矩阵越变越小(如果卷积层100层,每一层都缩小最终得到的将是很小的图片)
2.输入矩阵(左)边缘像素(绿阴影)只被计算过一次,而中间像素(红阴影)被卷积计算多次,意味着丢失图像角落信息。

为了解决这两个问题,就对输入图像进行padding,即填充像素

这里写图片描述
可以看到上图在原始图像的边缘用了像素填充,像素填充后的尺寸变为8×88×8,卷积核的大小为3×33×3,步长为1,经过卷积操作之后得到的feature map的尺寸是 (8−3+1)×(8−3+1)=6×6(8−3+1)×(8−3+1)=6×6,feature map的尺寸和原始输入图像的尺寸是一样的。这样就解决了feature map尺寸越来越小的问题。同时从图中可以看出,卷积核对边缘信息的处理不止处理了一次,对边缘信息的提取更加充分了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值