如何计算一个神经网络模型的时间复杂度

在计算机中,加法运算比乘法运算快很多,所以在估计计算量的时候我们主要计算要做多少次乘法。

在神经网络中,主要的运算是矩阵乘法。矩阵乘法的计算量是这样计算的:

一个 a\times b 的矩阵乘以一个 b\times c 的矩阵要做 abc 次乘法,所以 abc 就是两个矩阵相乘的计算量了。若 a 为主导变量,则其复杂度为 O(a) ;同理, 若 b 为主导变量,则其复杂度为 O(b) 。

这就是我们计算神经网络复杂度的依据。

【举个例子】

计算某两层网络 h(x)=max(0,xW_1+b_1)W_2+b_2 的复杂度?

假设矩阵 x 是 n\times d 的,W_1 是 d\times 4d 的,W_2 是 4d\times d 的。

所以第一层是 n\times d 的矩阵乘以 d\times 4d 的矩阵,得到一个 n\times 4d 的矩阵,计算量为 n\times d\times 4d ;第二层就是 n\times 4d 的矩阵乘以 4d\times d 的矩阵,得到一个 n\times d 的矩阵,计算量为 n\times 4d\times d 。(其中激活函数和加法运算的计算量忽略不计)

所以总的计算量是:

n\times d\times 4d+n\times 4d\times d=8nd^{2}

若n足够大,其复杂度为O(n),若d足够大,则复杂度为O(d^{2}) 。


【参考文章】

《如何计算算法的复杂度》

《线性Transformer应该不是你要等的那个模型》中的“评估计算量”(强烈建议对Transformer感兴趣的同学读一下这篇文章)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值