首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190123A05UUJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券