神经网络中关于padding的理解

对于padding的理解分为两个方面,步长为1和步长大于或等于2。
一、当步长大于等于2时,比较容易理解,padding=="same"时,width和height向上取整, 缺少的部分用padding 0 来补足;padding=="valid"时,width和height向下取整, 多余的部分舍弃。以下列代码为例:

from keras.layers import Conv2D,Dense,Flatten
from keras.models import Sequential
model = Sequential()
model.add(Conv2D(filters  = 32,kernel_size = [3,3],strides = [2,2],padding = 'valid',input_shape = [8,8,3]))
model.add(Flatten())
model.add(Dense(units = 10,activation = 'softmax'))
model.compile()
model.fit()
从model.add(Conv2D(filters  = 32,kernel_size = [3,3],strides = [2,2],padding = 'valid',input_shape = [8,8,3]))可以看出,
卷积前,width=8, height=8, channel=3
卷积核为[3, 3], 步长为[2, 2],过滤器数为32

如果padding==“valid”,
width = math.floor((8-3)/2)+1, heigth = math.floor((8-3)/2+1, channel = 32
如果padding==“same”,
width = math.ceil((8-3)/2)+1, heigth = math.ceil((8-3)/2+1, channel = 32
二、当步长等于1时,padding=="valid"时,不作任何处理;当padding=="same"时,保持卷积后的width和height和卷积前一样,缺少的用padding0来补足,这样就可以防止由于卷积导致图像不断缩减。以下列代码为例:

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 = 'valid',input_shape = [8,8,3]))
model.add(Flatten())
model.add(Dense(units = 10,activation = 'softmax'))
model.compile()
model.fit()
从model.add(Conv2D(filters  = 32,kernel_size = [3,3],strides = [1,1],padding = 'valid',input_shape = [8,8,3]))可以看出,
卷积前,width=8, height=8, channel=3
卷积核为[3, 3], 步长为[1, 1],过滤器数为32
如果padding==“valid”,
width = 8-3+1, heigth = 8-3+1, channel = 32
如果padding==“same”,
width = 8, heigth = 8, channel = 32
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在卷积神经网络padding是指在原始输入数据周围添加额外的像素点或边界,用来保持原始输入数据的尺寸。padding在卷积神经网络起到两个主要的作用:保持特征图的尺寸和边缘信息的保留。具体来说,padding有两种类型:'valid'和'same'。 首先,'valid'类型的padding表示不对输入数据进行填充,直接进行卷积操作。这意味着卷积核会完全覆盖输入数据,输出特征图的尺寸会减小。如果输入数据的尺寸为W×H,卷积核的大小为F×F,卷积操作之后得到的特征图尺寸为(W-F+1)×(H-F+1)。 而'same'类型的padding表示对输入数据进行填充,使得卷积操作之后得到的特征图尺寸与输入数据的尺寸相同。具体来说,对于奇数大小的卷积核,对输入数据的两侧分别填充(F-1)/2个像素点,而对于偶数大小的卷积核,可以对输入数据的两侧分别填充(F/2)个像素点。这样做的目的是保持边缘信息的完整性,并使得每个像素点都有机会参与卷积计算。 因此,卷积神经网络padding是根据卷积核的大小来确定的。对于卷积核大小为F×F的情况,'valid'类型的padding不做填充,而'same'类型的padding会根据卷积核的大小分别在输入数据的两侧填充(F-1)/2或F/2个像素点,以保持特征图的尺寸和边缘信息的完整性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [卷积神经网络padding理解](https://blog.csdn.net/ximu__l/article/details/129460717)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [卷积神经网络CNN以及几种经典模型](https://download.csdn.net/download/weixin_38520258/14036455)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值