15
我们知道随着神经网络层次的不断加深,参数数量也越来越多。但一个神经网络模型的参数量具体是多少可能我们并不是很清楚,所以今天我们来分享每一种网络模型的参数数量计算公式。
FFNN
首先我们定义三个参数:
i:输入大小
h:隐藏层大小
o:输出大小
即在前馈神经网络中参数数量为:
num_params =各层之间参数+每层的偏差= (i×h + h×o)+(h + o)
例如输入大小3,隐藏层大小5,输出大小2:
则num_params = (3×5 + 5×2)+(5 + 2) = 32
RNN
首先我们定义三个参数:
g:门的数量(RNN有1个门,GRU有3个,LSTM有4个)
h:隐藏单元大小
i:输出大小
每个门中的权重实际上是一个输入大小(h + i)和输出大小为h的FFNN。所以每个门都有h(h + i)+ h个参数。即在RNN中参数数量为:
num_params= g ×[ h(h + i)+ h ]
例如具有2个隐藏单元和输入尺寸3的LSTM:
则num_params = g ×[ h(h + i)+ h ]= 4 ×[2(2 + 3)+ 2] = 48
具有5个隐藏单元和输入大小为8(其输出连接在一起)的堆叠双向GRU +具有50个隐藏单元的LSTM的参数数量为:
其中双向GRU,5个隐藏单元,输入大小10
num_params_layer1 = 2 × g ×[ h(h + i)+ h ] = 2 ×3×[5(5 + 8)+ 5] = 420
LSTM有50个隐藏单位
num_params_layer2 = g ×[ h(h + i)+ h ]= 4×[50(50 + 10)+ 50]= 12200
则total_params = 420 + 12200 = 12620
CNN
首先我们定义三个参数:
i:输入尺寸
f:卷积核的大小
o:输出大小
则每个滤波器对应的输出映射参数为
num_params =权重+偏差= [ i×(f×f)×o ] + o
例如带有1 × 1滤波器的灰度图像,输出3个通道
参数数量为
num_params = [ i×(f×f)×o ] + o= [1 ×(2 × 2)× 3] + 3= 15
例如具有2×2滤波器的RGB图像,1通道的输出。则每个输入像素通道都有1个滤波器。产生的卷积按元素叠加,并且向每个元素添加偏差项。
最终得到参数数量为
num_params = [ i×(f×f)×o ] + o= [3 ×(2×2)×1] + 1 = 13
原文:https://towardsdatascience.com/counting-no-of-parameters-in-deep-learning-models-by-hand-8f1716241889
领取专属 10元无门槛券
私享最新 技术干货