python 計算模型引數總量

2021-10-09 05:58:50 字數 1480 閱讀 7736

計算模型引數總量

total = sum([param.nelement() for param in model.parameters()])

print(「number of parameter: %.2fm」 % (total/1e6))

例子:

紅色斷點放到下一行,並用debug執行。結果為:

要安裝:pip install thop

在程式裡輸入:

from thop import profile

from thop import clever_format

input1 = torch.randn(1,1, 16,16)

input2 = torch.randn(1,1, 16,16)

input3 = torch.randn(1,1, 16,16)

flops, params = profile(model, inputs=(input1,input2,input2 ))

print(flops, params) # 1819066368.0 11689512.0

flops, params = clever_format([flops, params], 「%.3f」)

print(flops, params) # 1.819g 11.690m

例如:

3.642m和 7.265k 分別代表flops和參數量。

和thop一樣,要安裝包:pip install torchstat

但torchstat貌似只能測試乙個輸入的,像thop一樣多輸入的不行。torchstat 詳細展示網路各層的引數,計算量,記憶體讀寫等等。

在程式裡輸入:

from torchstat import stat

stat(model, (1, 16, 16))

例如:

以上三種方式,計算的結果會有些許差異,但是不會差太多。

方法1不需要另外裝包。但只能計算模型的參數量。方法2和方法3需要額外安裝包,不過這個包不難裝,我用pip 清華源一次裝好。

方法2可以適合單輸入和多輸入的模型。

方法3貌似只適合但輸入的模型。方法3有層間的分析。

模型參數量與FLOPs計算

深度學習中parameters個數和flops計算 以cnn中經典的alexnet網路結構為例 never giveup的部落格 csdn部落格 大話cnn經典模型 alexnet 雪餅的個人空間 oschina 在計算flops中,有 kernel ops self.kernel size 0 s...

模型引數與模型超引數

模型引數是模型內部的配置變數,其值可以根據資料進行估計。模型在進行 時需要它們。它們的值定義了可使用的模型。他們是從資料估計或獲悉的。它們通常不由程式設計者手動設定。他們通常被儲存為學習模型的一部分。引數是機器學習演算法的關鍵。它們通常由過去的訓練資料中總結得出。在經典的機器學習文獻中,我們可以將模...

引數模型與非引數模型

引數模型 非引數模型 以及半引數模型 的概念應該源自於統計學中。統計專業中有一門課程叫做 非引數統計 研究的物件就是秩檢驗 核密度估計等。在統計學中,引數模型通常假設總體 隨機變數 服從某乙個分布,該分布由一些引數確定 比如正太分布由均值和方差確定 在此基礎上構建的模型稱為引數模型 非引數模型對於總...