1、填充

填充( padding )是指在输⼊⾼和宽的两侧填充元素(通常是 0 元素)。

给定(32x32)输入图像;

应用5x5大小的卷积核,第一层得到输出大小28x28,第七层得到输出大小4x4;

更大的卷积核可以更快的减少输出大小,形状从减少到。也就是行数和列数会较少。

注:当想用一个大的卷积核又不想减少输出怎么办?

就是进行填充,在输入的周围添加额外的行或者列。

在很多情况下,
我们会设置来使输⼊和输出具有相同的⾼和宽。
这样会⽅ 便在构造⽹络时推测每个层的输出形状。
  • 假设这⾥ 是奇数,我们会在⾼的两侧分别填充 ⾏。
  • 如 果 是偶数,⼀种可能是在输⼊的顶端⼀侧填充⾏,⽽在底端⼀侧填充⾏。
  • 在宽的两侧 填充同理.

2、步幅

步幅是指行或者列的滑动步长。往右边走多少列,往下边走多少行。

填充减小的输出大小与层数线性相关,给定输出大小224x224,在使用5x5卷积核的情况下,需要44层将输出降到4x4;需要大量的计算才能得到较小输出。

3、总结

填充和步幅是卷积层的超参数;

填充在输入周围添加额外的行或者列,来控制输出形状的减少量;

步幅是每次滑动核窗口时的行或者列,可以成倍的减少输出形状。

代码学习:

"""
下⾯的例⼦⾥我们创建⼀个⾼和宽为3的⼆维卷积层,然后设输⼊⾼和宽两侧的填充数分别为1。
给定⼀个⾼和宽为8的输⼊,我们发现输出的⾼和宽也是8
"""
import torch
from torch import nn
# 定义⼀个函数来计算卷积层。它对输⼊和输出做相应的升维和降维
def comp_conv2d(conv2d, X):# (1, 1)代表批量⼤⼩和通道数(“多输⼊通道和多输出通道”⼀节将介绍)均为1X = X.view((1, 1) + X.shape) #在维数的前边加入一个通道数和批量大小数。Y = conv2d(X)return Y.view(Y.shape[2:]) # 排除不关⼼的前两维:批量和通道
# 注意这⾥是两侧分别填充1⾏或列,所以在两侧⼀共填充2⾏或列
conv2d = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=3,padding=1)
#in_channels=1, out_channels=1,表示上下左右各填充一行
#kernel_size=3,表示核的大小是3x3X = torch.rand(8, 8) #输入一个随机的8x8的矩阵
#输出
print(comp_conv2d(conv2d, X).shape)"""当卷积核的⾼和宽不同时,我们也可以通过设置⾼和宽上不同的填充数使输出和输⼊具有相同的⾼和
宽。 """
# 填充不同的高度和宽度,使⽤⾼为5、宽为3的卷积核。在⾼和宽两侧的填充数分别为2和1
conv2d = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=(5, 3), padding=(2, 1))
comp_conv2d(conv2d, X).shapeprint(comp_conv2d(conv2d, X).shape)""" 将每次滑动的⾏数和列数称为步幅(stride)。
令⾼和宽上的步幅均为2,从⽽使输⼊的⾼和宽减半
"""
conv2d = nn.Conv2d(1, 1, kernel_size=3, padding=1, stride=2)
#stride=2,表示步幅为2
print(comp_conv2d(conv2d, X).shape)""" 下面是复杂点的例子"""
conv2d = nn.Conv2d(1, 1, kernel_size=(3, 5), padding=(0, 1), stride= (3, 4))print(comp_conv2d(conv2d, X).shape)

动手学深度学习——卷积层里的填充和步幅相关推荐

  1. 动手学深度学习——卷积层

    从全连接到卷积 1.简单例子:分类猫和狗的图片 使用一个还不错的相机采集图片(12M像素) RGB图片有36M元素 使用100大小的单隐藏层MLP,模型有3.6B元素,远多于世界上所有猫和狗总数(90 ...

  2. 卷积层、卷积层里的填充和步幅

    多层感知机 正式总结卷积层之前,先把上次多层感知机落下的一点内容补一补. 几个概念: 训练数据集:训练模型参数. 验证数据集:选择模型超参数. 训练误差:模型在训练数据上的误差. 泛化误差:模型在新数 ...

  3. 卷积层里的填充和步幅

    填充 当图片大小不大,但是想用更深的卷积层,就需要用到填充. 可以在输入的四周加入二外的行活列,使输入变得更大: 步幅 总的来说,填充和步幅是卷积层的超参数,填充在输入周围添加额外的行/列,来控制输出 ...

  4. 【动手学深度学习PyTorch版】12 卷积层

    上一篇移步[动手学深度学习PyTorch版]11 使用GPU_水w的博客-CSDN博客 目录 一.卷积层 1.1从全连接到卷积 ◼ 回顾单隐藏层MLP ◼ Waldo在哪里? ◼ 原则1-平移不变性 ...

  5. 【动手学深度学习PyTorch版】13 卷积层的填充和步幅

    上一篇移步[动手学深度学习PyTorch版]12 卷积层_水w的博客-CSDN博客 目录 一.卷积层的填充和步幅 1.1 填充 1.2 步幅 1.3 总结 二.代码实现填充和步幅(使用框架) 一.卷积 ...

  6. 【动手学深度学习PyTorch版】15 池化层

    上一篇请移步[动手学深度学习PyTorch版]14 卷积层里的多输入多输出通道_水w的博客-CSDN博客 目录 一.池化层 1.1 池化层 ◼池化层原因 ◼ 二维最大池化 1.2 填充.步幅与多个通道 ...

  7. 【动手学深度学习】之 现代卷积神经网络 AlexNet VGGNet NIN 习题解答

    动手学深度学习 7.1 AlexNet 试着增加迭代轮数.对比LeNet的结果有什么不同?为什么? 增加迭代次数,LeNet的准确率比AlexNet低,因为复杂的网络有着更强的学习能力. LeNet ...

  8. 李沐动手学深度学习V2-全卷积网络FCN和代码实现

    一.全卷积网络FCN 1. 介绍 语义分割是对图像中的每个像素分类,全卷积网络(fully convolutional network,FCN)采用卷积神经网络实现了从图像像素到像素类别的变换 ,与前 ...

  9. 动手学深度学习08:卷积中的填充与步幅

    动手学深度学习08:卷积中的填充与步幅 一个240×240像素的图像,经过10层5×5的卷积后,将减少到200×200像素. 如此一来,原始图像的边界丢失了许多有用信息.而填充是解决此问题最有效的方法 ...

最新文章

  1. 010 自动技能的设计和实现
  2. 电子书网站推荐(收藏系列)
  3. pythonfor循环range_python之for循环与range()函数
  4. linux之awk命令学习笔记
  5. RuoYi-Cloud 部署篇_01(windows环境 mysql +nginx版本)
  6. html块状元素和内联元素_HTML中的内联元素和块元素-解释
  7. toj 4607 Multiple of 17
  8. js实现IE、谷歌浏览器打印网页内容
  9. TrueNAS Enterprise是什么
  10. 微信公众号“成为开发者”实践代码
  11. suse linux 忘记root密码,SUSE linux 忘记root密码
  12. Zabbix5系列-监控惠普服务器iLO管理口 (六)
  13. 实例解析云计算的概念
  14. CNTV的点播调度方式
  15. 自制StartUp宏病毒专杀小工具
  16. Internet Explorer 无法打开该 Internet 站点。请求的站点不可用
  17. java都市男人心痒痒_男人听了会“心痒痒”的四个称呼,低情商的女人从来没叫过...
  18. 计算机专业学微积分有什么用,学微积分有什么用啊?
  19. PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: 'C:\\Users\\ADMINI~1\\AppDa ta\\Local\\Temp\\pi
  20. oracle pga建议值,对SGA和PGA的优化建议

热门文章

  1. 挑战阿里社招:Java外包是如何转正华为的?细节爆炸
  2. 用python画小黄人-Python turtle模块小黄人程序
  3. 电子科技大学计算机系王教授,西安电子科技大学计算机学院研究生导师简介-王泉...
  4. OA系统模块设计方案
  5. 解析什么是高防IP,高防IP的原理
  6. 金蝶服务器显示已离线,金蝶kis显示云服务器已离线
  7. 政务服务一体化平台的电子证照需要时间戳服务吗?
  8. 稻壳首页模板index.php的建立
  9. 关闭win10的快速启动
  10. security安全验证登录