cnn系列文章三 --padding和strides详解

一句歌词继续中:

《霜雪千年》
苔绿青石板街
斑驳了流水般岁月
小酌三盏两杯
理不清缠绕的情结

典型的卷积神经网络

  • convolution (Conv) 卷积层
  • pooling (pool) 池化层
  • fully connected (FC) 全连接层

池化层

1. max pooling(最大池化)

简单的说就是使用过滤器对图像进行区域分割,然后输出每个区域的最大值。

比如下图使用 2 × 2 2\times 2 2×2的过滤器,选择步长为2,则然后输出 4 − 2 2 + 1 = 2 \frac{4 -2}{2} + 1 = 2 24−2​+1=2即 2 × 2 2\times2 2×2的图像,每个像素点的值为原图像中过滤器覆盖区域的最大值

最大池化的直观理解:

还记得垂直边缘检测的例子吗,在边缘处,输出图像的值很大。也就是说,当输出图像的值很大时,意味着提取了某些特征。

而最大池化的操作就是,只要在任何一个象限中提取到某个特征,就都会保留到最大池化的输出结果中。如果提取到某个特征,则保留其最大值,比如上图中左上角的9,而如果为提取到特征,则最大池化后的输出仍很小,比如右上角的2.

在实际工作中,加入最大池化后,通常网络表现的会很好。

注意当有多个通道时:是对每一通道分别进行最大池化操作,不会改变图像的通道数目。

2.average pooling (平均池化)

顾名思义,就是在每个区域上求平均值,作为平均池化的输出值

平均池化用的很少

总结

  1. 池化操作不需要训练参数,只有两个超参数:

    • f : f i l t e r s i z e f: filter size f:filtersize
    • s : s t r i d e s: stride s:stride

    常见的超参数有:

    f = 2 , s = 2 f = 2, s=2 f=2,s=2将图像的高度和宽度减半

    f = 3 , s = 2 f=3, s=2 f=3,s=2

  2. 很少用padding,即 p = 0 p=0 p=0

  3. input: n H × n W × n C n_H \times n_W \times n_C nH​×nW​×nC​

    output: ⌊ n H − f s + 1 ⌋ × ⌊ n W − f s + 1 ⌋ × n C \lfloor \frac{n_H - f}{s} + 1 \rfloor \times \lfloor \frac{n_W - f}{s} + 1 \rfloor \times n_C ⌊snH​−f​+1⌋×⌊snW​−f​+1⌋×nC​

卷积神经网络示例

参数设计收LeNet-5启发。我的建议还是在纸上推导一下呢。

接下来看一下网络结构和参数:

来计算几个参数:
我发现208这个参数数量有点没太搞懂

不是 5 × 5 × 3 × 8 + 8 = 608 5 \times 5 \times 3 \times 8 + 8 = 608 5×5×3×8+8=608吗?

  • 参数大多集中在全连接层
  • 随着网络层深度增加,激活数量在减小,但是数量不能下降的太快,否则会影响网络的表现性能。

卷积神经网络的优势

若是全连接层需要的参数大概是14 million。

  • 参数共享

    某一个特征检测器可以在所有图像上使用,大量减少参数数量
  • 稀疏连接

    每一个输出像素值紧依赖于输入很小的输入值,而非全连接层的所有输入值。更容易发现局部特征

通过以上两种方式,cnn结构大量减少参数数量。

接下来讲解tensorflow卷积和池化两个函数。

cnn系列文章四 --池化层和简单卷积网络示例相关推荐

  1. 1.8 简单卷积网络示例-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.7 单层卷积网络 回到目录 1.9 池化层 简单卷积网络示例 (A Simple Convolution Network Example) 上节课,我们讲了如何为卷积网络 ...

  2. cnn池化层输入通道数_(pytorch-深度学习系列)CNN中的池化层-学习笔记

    CNN中的池化层 首先,池化(pooling)层的提出是为了缓解卷积层对位置的过度敏感性. 什么意思? 比如在图像边缘检测问题中,实际图像里,我们的目标物体不会总出现在固定位置,即使我们连续拍摄同一个 ...

  3. (pytorch-深度学习系列)CNN中的池化层-学习笔记

    CNN中的池化层 首先,池化(pooling)层的提出是为了缓解卷积层对位置的过度敏感性. 什么意思? 比如在图像边缘检测问题中,实际图像里,我们的目标物体不会总出现在固定位置,即使我们连续拍摄同一个 ...

  4. 1.9 池化层-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.8 简单卷积网络示例 回到目录 1.10 卷积神经网络示例 池化层 (Pooling Layers) 除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度, ...

  5. 图像识别(七)| 池化层是什么?有什么作用?

    前面的文章 图像识别(番外1)| AI算法攻城狮左手图纸,右手搬砖的真实性以及长图展示Resnet全貌和可视化CNN_董董灿是个攻城狮的博客-CSDN博客_ai图像识别算法中,展示了一张Resnet5 ...

  6. 深度学习入门 (九):卷积层和池化层的实现

    目录 卷积神经网络 CNN 整体结构 卷积层 全连接层存在的问题 卷积运算 乘积累加运算 偏置 填充 (padding) 步幅 (stride) 小结:卷积层的输出特征图的大小 3 维数据的卷积运算 ...

  7. keras中的卷积层池化层

    文章目录 卷积层 创建卷积层 卷积层的格式及参数: 卷积层中的参数数量 卷积层的形状 池化层 keras中的最大池化层 参数 卷积层 创建卷积层 首先导入keras中的模块 from keras.la ...

  8. 池化层对神经网络的运算速度有什么影响

    虽然加入池化层是为了使网络获得抗扭曲,抗拉伸的特性并不完全是为了计算效率考虑,但加入池化层到底对计算速度有什么影响?这里设计了两个网络做对比, 其中一个是有2个卷积层,2层全连接层的神经网络,另一个是 ...

  9. 34. 池化层 / 汇聚层

    1. 池化层 如果我们拍摄黑白之间轮廓清晰的图像X,并将整个图像向右移动一个像素,即Z[i, j] = X[i, j + 1],则新图像Z的输出可能大不相同.而在现实中,随着拍摄角度的移动,任何物体几 ...

最新文章

  1. aligned_storage简单学习
  2. Silverlight+WCF 新手实例 象棋 主界面-实时聊天区(二十五)
  3. SQLSERVER 分页
  4. 突然想起来,前天是感恩节。
  5. java 构造方法
  6. MongoDB(课时30 $group)
  7. jQuery就业课系列之.jQueryDOM
  8. Min_25 筛小结
  9. Android之二维码生成和识别
  10. Composer帮你轻松管理PHP包 autoload
  11. 各种编译环境中如何为C++添加命令行参数(Command-line parameter)
  12. wordpress插件列表
  13. php zmq demo1
  14. php 标点符号,php怎么去除标点符号
  15. SQL Sever 创建视图
  16. 运行spark及hadoop版本不一致解决方法
  17. “法外狂徒”张三经典语录
  18. 【App下载安装量】多渠道统计
  19. APPH系列相位噪声分析仪和VCO测试仪—输入高达40GHz
  20. Mysql中数据类型括号中的数字代表的含义

热门文章

  1. CDF 和 PDF 比较
  2. python数据参数化
  3. 振涛教育云计算学院2206A班荣中伟
  4. retrofit2.0缓存设置
  5. ChatGPT报错“Sorry You Have Been Blocked“ 解决办法
  6. 微信小程序UDP通信
  7. 昨天用了下Netty,发现真香!
  8. DB2 10.5 BLU列式存储技术初试
  9. GDB十分钟教程(转载自Liigo老师)
  10. php修改table样式,CSS怎么设置table边框样式