神經網路的利用率和
阿新 • • 發佈:2019-01-07
1. 神經網路的利用率
當一個CNN網路做forward時,對於硬體資源的利用情況,稱之為利用率。
如何計算利用率?
- 計算網路的計算量,通常是乘累加的次數
- 測量網路執行耗時
- 乘累加次數除以耗時, 計算該網路的GFLOPS
- 用計算的網路GFLOPS除以硬體資源的理論GFLOPS,即利用率
2. GFLOPS
全稱:float operations per second,每秒可做浮點操作的數量。用來衡量硬體效能,等價於運算速度。該值越大,說明硬體效能越高,速度越快。量級通常在M(10e6),G(10e9),T(10e12)。例如:9.6 GFLOPS 表示每秒可做 9.6 G 次浮點操作。
FLOPs:全稱是float operations,浮點運算次數,等價於運算量。可用來衡量網路/模型的複雜度。該值越大,表示該網路的計算複雜度越高。
3. 網路計算量
網路前向計算時,卷積運算佔據耗時90%以上。因此重點關注下如何計算卷積的運算量。
為簡化問題,以下討論認為:卷積採用滑動視窗且,忽略非線性計算的開銷。
有卷積層的引數包括:輸入 feature map 的 ,寬 ,高 ,輸出 feature map 的 ,寬 ,高 ,卷積核的尺寸 ,卷積核通道等於 ,卷積核個數等於 。則該卷積核與feature map做卷積的運算量為:
其中的1表示偏置量。偏置值每個卷積核對應1個,共有 個。(wx+b)
將 FLOPS 除以 10e9 得到 GFLOPS。
參考
[1] 神經網路計算量FLOPs: https://blog.csdn.net/zhaoyin214/article/details/83616164
[2] print_model_parm_flops: https://blog.csdn.net/junmuzi/article/details/83109660