动手学深度学习学习笔记tf2.0版(5.2 填充和步幅)

卷积神经网络之填充和步幅 学习笔记

github代码地址:https://github.com/taichuai/d2l_zh_tensorflow2.0

在这里插入图片描述
在这里插入图片描述

API讲解:Conv2D(filter, padding, kernel_size=None,strides=None, name=None),具体细节建议查看源码

注意这里是两侧分别填充1行或列,所以在两侧一共填充2行或列
inputs: 在tensorflow中,X 的输入形状, 需要 4 维,batch * h * w * 通道数,其他框架有所不同
filters:卷积核个数
kernel_size: 核尺寸 h * w
padding: ‘SAME’ or ‘VALID’ 'VALID’表示0填充。注意:'SAME’并不是表示输入输出尺寸大小一样,只是考虑边界,如果不够用0填充
strides:步长 可以输入一个元组,也可以是一个整数,整数表示长宽方向步长相同

def comp_conv2d(conv2d, X):
    # 将 X 转换成 [1,h,w, 1],即 batch * h * w * 通道数的个数
    X = tf.reshape(X,(1,) + X.shape + (1,))
#     X = tf.reshape(X,X.shape)
    Y = conv2d(X)
    #input_shape = (samples, rows, cols, channels)
    return tf.reshape(Y,Y.shape[1:3])

# 注意这里是两侧分别填充1行或列,所以在两侧一共填充2行或列
# Conv2D(filter, padding, kernel_size=None,strides=None, name=None)
# filters:卷积核个数
# kernel_size: 核尺寸 h * w
# padding: 'SAME' or 'VALID' 'VALID'表示0填充。注意:'SAME'并不是表示输入输出尺寸大小一样,只是考虑边界,如果不够用0填充
# strides:步长 可以输入一个元组,也可以是一个整数,整数表示长宽方向步长相同
conv2d = tf.keras.layers.Conv2D(1, kernel_size=3, padding='same',strides=(2,2))
X = tf.random.uniform(shape=(8,8))

# 注意函数中 X 的输入形状, 需要 4 维,batch * h * w * 通道数
comp_conv2d(conv2d,X).shape

在这里插入图片描述
在这里插入图片描述

conv2d = tf.keras.layers.Conv2D(1, kernel_size=3, padding='same',strides=2)
comp_conv2d(conv2d, X).shape

接下来是一个稍微复杂点儿的例子。

conv2d = tf.keras.layers.Conv2D(1, kernel_size=(3,5), padding='valid', strides=(3,4))
comp_conv2d(conv2d, X).shape

在这里插入图片描述
关于padding,再补充一点,参考自:https://oldpan.me/archives/tf-keras-padding-vaild-same

tensorflow中有两种padding方式:vaild和same,两种方式有所区别

有时候会遇到这样的代码x = Conv2D(filters, kernel_size=5, strides=2, padding='same')(x),与pytorch不同,tensorflowTensorFlow设置卷积层的过程中可以设置padding参数,vaildsame。“valid”代表只进行有效的卷积,对边界数据不处理。“same”代表保留边界处的卷积结果,通常会导致输出shape与输入shape相同。

那vaild和same有什么区别,两者本质区别就是padding过程中采取的策略不同。
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值