keras.layers.Conv2D中的padding解析

本文探讨了深度学习中两种零填充策略:same与valid。通过实例解析,阐述了如何计算并应用这两种填充方式,确保卷积操作的平滑进行。使用Keras框架进行了代码验证,展示了不同填充方式对卷积层输出的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

same方式:

求最小整数2p,使得(img_size + 2p - kernel_size) / stride为正整数,然后以右、下优先的方式进行零填充。

例:img_size=4, kernel_size=3, stride=2, (4 + 2p - 3) / 2为整数,解得2p=1,则图片的右下角填充1,左上角无填充

valid方式:

从左向右,右边多余的会被舍弃

 

验证代码:

from keras.models import Sequential, Model
from keras.layers import Conv2D, ZeroPadding2D
import numpy as np
from keras import backend as K

input_size = 5

model = Sequential()
model.add(ZeroPadding2D(1, input_shape=(input_size, input_size, 1)))
model.add(Conv2D(1, (3, 3), padding='valid', strides=2, activation='relu'))

model.summary()

weights = [np.array([[[[1.]], [[1.]], [[1.]]],
                     [[[1.]], [[1.]], [[1.]]],
                     [[[1.]], [[1.]], [[1.]]]]), 
           np.array([0.])]
model.layers[1].set_weights(weights)

x = np.arange(input_size * input_size)
x = x.reshape((1, input_size, input_size, 1))

iterate = Model([model.input], [model.layers[1].output])

y = iterate(x)

print(y)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值