CNN Structure -- 1

一个简单的加强记忆的笔记,没做优化

ConV层:

  • Output size:

    (N - F) / stride + 1

1
2
N: 图像像素
F: 滤波器像素
  • pad

填补(pad),在图像周围加上一圈(或多圈)像素0 -> 卷积层中的超参数

填补的用处:加上一圈(或多圈)再做卷积,输出的尺寸会和输入的尺寸一样大

eg:

1
2
3
4
5
6
7
8
9
10
11
12
已知条件:
输入尺寸:32 * 32 * 3
用 10 层 5*5 的滤波器
stride是 1,pad 是 2

可以推出:
输出尺寸:
(32 + 2 * 2 - 5) / 1 + 1 = 32
so: 32 * 32 * 10
此网络的参数个数:
每层有 5 * 5 * 3 -> 75 + 1 -> 76 个( +1 for bias)
so: 共 76 * 10 -> 760 个

ConV Layer Summary:

  • 每次接收尺寸:W1 · H1 · D1
  • 每次输出尺寸:W2 · H2 · D2
  • 卷积层的个数:K
  • 滤波器的长度:F
  • 步长:S
  • pad的长度:P
  • W2 = (W1 - F + 2 · P) / S + 1
  • H2 = (H1 - F + 2 · P) / S + 1
  • D2 = K
  • 每个滤波器权重的数量:F · F · D
  • 该卷积层权重的数量:F · F · D · K + K

说明:

  1. 其中 K 总是 2 的指数;
  2. K, F, S, P 是该卷积的四个超参数
  3. 一般地,我们假设 W2 = H2
  4. 为什么 pad 一般选择填充的像素是 0 :滤波器只考虑了输入的数据,因为做点乘的时候,0 不会对输出有影响
  5. 1 * 1 的滤波器做卷积看似没有意义,实则不是(因为练习中卷积一般是在二维层次上的,但是数据是三维的)。有时我们称这种滤波器为“线缆”或者“有深度的列”

Pooling

在做卷积运算时,我们不会在空间上缩小数据的尺寸,而是会保持空间的尺寸。空间尺寸的减小通常是在下采样层(Pooling Layer)进行的。

下采样层就是把输入数据拿过来,然后通过下采样达到空间上压缩的目的。这个下采样在每个激活映射中独立的进行。在深度方向的每一层的激活映射本质上都是下采样之后再放回。

常见的两种下采样方式:

  • Max Pooling : 取每个分区中的最大数字
  • Average Pooling : 取每个分区中的平均数字

Pooling Layer Summary:

  • 接收数据尺寸:W1 · H1 · D1
  • 输出数据尺寸:W2 · H2 · D2
  • 滤波器的尺寸:F (即下采样取样的范围)
  • 步长:S
  • W2 = (W1 - F) / S + 1
  • H2 = (H1 - F) / S + 1
  • D2 = D1

说明:

F, S 是它的超参数