1.卷积简介
卷积运算的目的是提取输入的不同特征,某些卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网路能从低级特征中迭代提取更复杂的特征。实际使用中往往与BN(批量归一化)、激活函数搭配使用。
卷积和池化区别:卷积往往需要学习参数w和b,池化不需要学习。
卷积层后往往加激活函数进行非线性变换,池化不需要。
2. 卷积输出尺寸
卷积后图片输出后尺寸:
N
=
W
+
2
P
−
F
s
+
1
N =\frac{W + 2P - F}{s} + 1
N=sW+2P−F+1
根据公式推出SAME需要填充的padding:
P
=
(
N
−
1
)
∗
s
+
F
−
W
2
P = \frac{(N -1) * s + F - W}{2}
P=2(N−1)∗s+F−W
W:输入原图尺寸,P为四周填充层数,F为卷积核尺寸,S为步长
SAME填充的效果:
自动计算填充:框架会自动计算卷积核或池化窗口边缘所需的填充量,以便在不改变特征图尺寸的情况下应用操作。
保持尺寸一致:无论卷积或池化操作如何,只要设置了 “SAME” 填充,输出特征图的高度和宽度都将与输入特征图相同。
边缘填充:如果需要,框架会在输入特征图的周围填充零值(或其他指定的填充值),以确保卷积或池化操作可以在边缘处应用。
步长影响:
即使设置了 “SAME” 填充,如果步长(stride)大于1,输出特征图的尺寸可能会小于输入特征图的尺寸。步长是指卷积核或池化窗口滑动的间隔。具体来说:
步长为 1:当步长为 1 时,卷积核或池化窗口每次移动一个像素单位。在这种情况下,如果使用 “SAME” 填充,输出特征图的尺寸将与输入特征图的尺寸相同。
步长为 2 或更大:当步长增加到 2 或更大时,卷积核或池化窗口每次移动两个或更多的像素单位。这会导致输出特征图的尺寸减小。即使使用 “SAME” 填充,输出特征图的尺寸也将是输入特征图尺寸除以步长因子后的结果。
所以无论是卷积还是池化,输出图片大小尺寸为:
padding=VALID
N
=
W
−
F
+
1
S
(
向上取整
)
N = \frac{W - F + 1}{S}(向上取整)
N=SW−F+1(向上取整)
padding=SAME:
N
=
W
S
(
向上取整
)
N = \frac{W}{S}(向上取整)
N=SW(向上取整)
3.参数量
卷积网络结构中参数数量怎么算?
神经网络中W参数的行和列数量取决于前后隐藏层中神经元的个数。
如果是卷积层,卷积核的参数计算取决于卷积核的尺寸、输入数据的深度(即通道数)以及卷积核的数量。计算公式为:
( C i n ∗ K ∗ K + 1 ) ∗ C o u t (Cin * K* K + 1) * Cout (Cin∗K∗K+1)∗Cout
注:Cin为输入通道数,Cout为卷积核个数(输出通道数)
神经网络各层的神经元个数如何计算?
输入层神经元的个数取决于输入图片的特征数,一般无非线性变换。
输出层神经元的个数取决于需要预测的目标变量的数目。回归任务可以同时预测多个结果,无非线性。分类任务如果多分类就有多个分类结果,存在softmax或者sigmod非线性变换 。
隐藏层神经元个数需要大量经验得出合适个数,必须要有非线性结构。