batch size
一个训练集过大(m个样例),需要划分。
- 划分为1个:
- 名称:batch梯度下降
- batch_size = m
- 用整个训练集进行梯度下降
- 划分为5个:
- 名称:mini-batch梯度下降
- batch_size = m/5
- 划分为m个:
- 名称:随机梯度下降
- batch_size = 1
- 一次对一个样例数据进行梯度下降
epoch
对整个训练集进行一次梯度下降:即所有的训练样本完成一次forward和backward propagation。
对于训练集划分为5个子集:就是对5个子集都执行完。
一般样本要过很多次,多个epoch,直到收敛。
iteration
迭代,表示进行了一次梯度下降,更新了一次网络参数。
iteration=[batch_size]个训练数据forward+backward后更新参数过程
episode
一个状态、动作和回报的序列,以终止状态结束。对于围棋,从头到尾下一盘棋就是一个episode。是强化学习中的概念。
下采样
下采样层有两个作用,一是减少计算量,防止过拟合;二是增大感受野,使得后面的卷积核能够学到更多更加全面的信息。
下采样的方式主要有两种:
- 采用stride为2的池化层,如Max-pooling和Average-pooling ,目前通常使用Max-pooling,因为他计算简单而且能够更好的保留纹理特征;
- 采用stride为2的卷积层,下采样的过程是一个信息损失的过程,而池化层是不可学习的,用stride为2的可学习卷积层来代替pooling可以得到更好的效果,当然同时也增加了一些计算量
卷积
一个尺寸
i
n
s
i
z
e
×
i
n
s
i
z
e
\rm in_{size}\times in_{size}
insize×insize 的特征图,经过
c
o
n
v
s
i
z
e
×
c
o
n
v
s
i
z
e
\rm conv_{size}\times conv_{size}
convsize×convsize 的卷积层,步幅为
s
t
r
i
d
e
\rm stride
stride,填充为
p
a
d
d
i
n
g
s
i
z
e
\rm padding_{size}
paddingsize,计算出输出的特征图尺寸:
o
u
t
s
i
z
e
=
i
n
s
i
z
e
−
c
o
n
v
s
i
z
e
+
2
×
p
a
d
d
i
n
g
s
i
z
e
s
t
r
i
d
e
+
1
\rm out_{size}= \dfrac{in_{size}-conv_{size}+2\times padding_{size}}{stride}+1
outsize=strideinsize−convsize+2×paddingsize+1
例:输入4*4,卷积核3*3,stride = 1,padding = 0
输出尺寸 = (4-3+0)/1 + 1 = 2
输入5*5,卷积核3*3,stride = 1,padding = 1
输出尺寸 = (5-3+2)/1 + 1 = 5
输入5*5,卷积核3*3,stride = 2,padding = 0
输出尺寸 = (5-3+0)/2 + 1 = 2
输入6*6,卷积核3*3,stride = 2,padding = 1
输出尺寸 = int(6-3+2)/2 + 1 = 3
注意:这里的padding有一列是没有参与卷积的,因为stride为2没有办法采样到这一列
上采样的原理和常用方式
在卷积神经网络中,由于输入图像通过卷积神经网络CNN提取特征后,输出的尺寸往往会变小,而有时我们需要将图像恢复到原来的尺寸以便进一步的计算,这个使图像由小分辨率映射到大分辨率的操作,叫上采样,它的实现一般有三种方式:
- 插值, 一般使用的是双线性插值,因为效果最好,虽然计算上比其他插值方式复杂,但是相对于卷积计算可以说不值一提,其他插值方式还有最近邻插值、三线性插值等;
- 转置卷积又称反卷积(Transpose Conv),通过对输入feature map间隔填充0,通过对输入feature map间隔填充0,再进行标准的卷积计算,可以使用输出feature map尺寸比输入更大;
- Up-Pooling Max Unpooling Avg Unpooling Max Unpooling 在对称的max pooling位置记录最大值的索引位置,然后在unpooling阶段时将对应的值放置到原先最大值位置,其余补零。