一个公式搞定深度学习模型中的参数数量计算

我们知道随着神经网络层次的不断加深,参数数量也越来越多。但一个神经网络模型的参数量具体是多少可能我们并不是很清楚,所以今天我们来分享每一种网络模型的参数数量计算公式。

FFNN

首先我们定义三个参数:

i:输入大小

h:隐藏层大小

o:输出大小

即在前馈神经网络中参数数量为:

num_params =各层之间参数+每层的偏差= (i×h + h×o)+(h + o)

例如输入大小3,隐藏层大小5,输出大小2:

 

一个公式搞定深度学习模型中的参数数量计算_第1张图片

则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:

 

一个公式搞定深度学习模型中的参数数量计算_第2张图片

则num_params = g ×[ h(h + i)+ h ]= 4 ×[2(2 + 3)+ 2] = 48

具有5个隐藏单元和输入大小为8(其输出连接在一起)的堆叠双向GRU +具有50个隐藏单元的LSTM的参数数量为:

 

一个公式搞定深度学习模型中的参数数量计算_第3张图片

其中双向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个通道

 

一个公式搞定深度学习模型中的参数数量计算_第4张图片

参数数量为

num_params = [ i×(f×f)×o ] + o= [1 ×(2 × 2)× 3] + 3= 15

例如具有2×2滤波器的RGB图像,1通道的输出。则每个输入像素通道都有1个滤波器。产生的卷积按元素叠加,并且向每个元素添加偏差项。

 

一个公式搞定深度学习模型中的参数数量计算_第5张图片

最终得到参数数量为

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

你可能感兴趣的:(深度学习)