神经网络的可训练参数量
神经网络中参数的数量是一个重要的考虑因素,因为它直接影响了模型的复杂性、训练和推理的效率,模型的泛化能力。
卷积层
输出尺寸
=
输入尺寸
−
卷积核尺寸
+
2
×
填充
步幅
+
1
\text{输出尺寸}=\frac{\text{输入尺寸}-\text{卷积核尺寸}+2\times \text{填充}}{\text{步幅}}+1
输出尺寸=步幅输入尺寸−卷积核尺寸+2×填充+1
参数量
=
K
2
×
C
i
×
C
o
+
C
o
参数量=K^2\times C_i \times C_o + C_o
参数量=K2×Ci×Co+Co
其中K为卷积核大小,
C
i
C_i
Ci为输入通道数,
C
o
C_o
Co为输出通道数,最后一项为每个卷积核对应的偏置的参数。
假设输入为(512, 512, 3),卷积层为
model.add(Conv2D(32,(3,3),input_shape=(512,512,3)))
输出格式为(510, 510,3),参数量为896。
输出尺寸 = 512 − 3 + 2 × 0 1 + 1 = 510 \text{输出尺寸}=\frac{512-3+2\times 0}{1}+1=510 输出尺寸=1512−3+2×0+1=510
参数量 = 3 2 × 3 × 32 + 32 = 896 \text{参数量}=3^2\times 3\times 32+32=896 参数量=32×3×32+32=896
激活层
激活层引入了非线性特征,但本身没有可训练参数。
池化层
池化层本身没有可训练参数,但是会影响输出尺寸。
输出尺寸
=
⌊
输入尺寸
−
池化核尺寸
步幅
+
1
⌋
\text{输出尺寸} = \left\lfloor \frac{{\text{输入尺寸} - \text{池化核尺寸}}}{{\text{步幅}}} + 1 \right\rfloor
输出尺寸=⌊步幅输入尺寸−池化核尺寸+1⌋
展平层
展平层的作用是将之前输出特征转换为一维向量,以便连接到全连接层,其本身没有可训练参数。
全连接层
参数量
=
T
i
×
T
o
+
T
o
参数量=T_i\times T_o +T_o
参数量=Ti×To+To
其中
T
i
T_i
Ti为输入通道数,
T
o
T_o
To为输出通道数,最后一项为偏置项的参数。
输入为(1600),输出为(400),全连接层为
model.add(Dense(400))
参数量为640400。
参数量 = 1600 × 400 + 400 = 640400 参数量=1600\times 400 + 400=640400 参数量=1600×400+400=640400
参考