pytorch 計(jì)算Parameter和FLOP的操作
深度學(xué)習(xí)中,模型訓(xùn)練完后,查看模型的參數(shù)量和浮點(diǎn)計(jì)算量,在此記錄下:
1 THOP
在pytorch中有現(xiàn)成的包thop用于計(jì)算參數(shù)數(shù)量和FLOP,首先安裝thop:
pip install thop
注意安裝thop時(shí)可能出現(xiàn)如下錯(cuò)誤:
解決方法:
pip install --upgrade git+https://github.com/Lyken17/pytorch-OpCounter.git # 下載源碼安裝
使用方法如下:
from torchvision.models import resnet50 # 引入ResNet50模型 from thop import profile model = resnet50() flops, params = profile(model, input_size=(1, 3, 224,224)) # profile(模型,輸入數(shù)據(jù))
對(duì)于自己構(gòu)建的函數(shù)也一樣,例如shuffleNetV2
from thop import profile from utils.ShuffleNetV2 import shufflenetv2 # 導(dǎo)入shufflenet2 模塊 import torch model_shuffle = shufflenetv2(width_mult=0.5) model = torch.nn.DataParallel(model_shuffle) # 調(diào)用shufflenet2 模型,該模型為自己定義的 flop, para = profile(model, input_size=(1, 3, 224, 224),) print("%.2fM" % (flop/1e6), "%.2fM" % (para/1e6))
更多細(xì)節(jié),可參考thop GitHub鏈接: https://github.com/Lyken17/pytorch-OpCounter
2 計(jì)算參數(shù)
pytorch本身帶有計(jì)算參數(shù)的方法
from thop import profile from utils.ShuffleNetV2 import shufflenetv2 # 導(dǎo)入shufflenet2 模塊 import torch model_shuffle = shufflenetv2(width_mult=0.5) model = torch.nn.DataParallel(model_shuffle) total = sum([param.nelement() for param in model.parameters()]) print("Number of parameter: %.2fM" % (total / 1e6))
補(bǔ)充:pytorch: 計(jì)算網(wǎng)絡(luò)模型的計(jì)算量(FLOPs)和參數(shù)量(Params)
計(jì)算量:
FLOPs,F(xiàn)LOP時(shí)指浮點(diǎn)運(yùn)算次數(shù),s是指秒,即每秒浮點(diǎn)運(yùn)算次數(shù)的意思,考量一個(gè)網(wǎng)絡(luò)模型的計(jì)算量的標(biāo)準(zhǔn)。
參數(shù)量:
Params,是指網(wǎng)絡(luò)模型中需要訓(xùn)練的參數(shù)總數(shù)。
第一步:安裝模塊(thop)
pip install thop
第二步:計(jì)算
import torch from thop import profile net = Model() # 定義好的網(wǎng)絡(luò)模型 input = torch.randn(1, 3, 112, 112) flops, params = profile(net, (inputs,)) print('flops: ', flops, 'params: ', params)
注意:
輸入input的第一維度是批量(batch size),批量的大小不回影響參數(shù)量, 計(jì)算量是batch_size=1的倍數(shù)
profile(net, (inputs,))的 (inputs,)中必須加上逗號(hào),否者會(huì)報(bào)錯(cuò)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
python實(shí)現(xiàn)密碼強(qiáng)度校驗(yàn)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)密碼強(qiáng)度校驗(yàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03python opencv實(shí)現(xiàn)圖像邊緣檢測(cè)
這篇文章主要為大家詳細(xì)介紹了python opencv實(shí)現(xiàn)圖像邊緣檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04Python面向?qū)ο箢?lèi)繼承和組合實(shí)例分析
這篇文章主要介紹了Python面向?qū)ο箢?lèi)繼承和組合,結(jié)合實(shí)例形式分析了Python3面向?qū)ο罄^承的原理、用法以及繼承與組合相關(guān)使用技巧,需要的朋友可以參考下2018-05-05python并行設(shè)計(jì)的實(shí)現(xiàn)
python中的并行設(shè)計(jì)可以顯著增強(qiáng)程序處理大量數(shù)據(jù)或復(fù)雜計(jì)算的速度,通過(guò)使用threading、multiprocessing和concurrent.futures等庫(kù),開(kāi)發(fā)者可以有效利用多核CPU的計(jì)算力,下面就來(lái)詳細(xì)的介紹一下2024-09-09python面向?qū)ο缶幊淘O(shè)計(jì)原則之單一職責(zé)原則詳解
這篇文章主要為大家詳細(xì)介紹了python面向?qū)ο缶幊淘O(shè)計(jì)原則之單一職責(zé)原則,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03python解析html開(kāi)發(fā)庫(kù)pyquery使用方法
PyQuery是一個(gè)類(lèi)似于jQuery的Python庫(kù),也可以說(shuō)是jQuery在Python上的實(shí)現(xiàn),能夠以jQuery的語(yǔ)法來(lái)操作解析 HTML 文檔,易用性和解析速度都很好2014-02-02Python3如何日志同時(shí)輸出到控制臺(tái)和文件
這篇文章主要介紹了Python3如何日志同時(shí)輸出到控制臺(tái)和文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11通過(guò)python繪制華強(qiáng)買(mǎi)瓜的字符畫(huà)視頻的步驟詳解
要把華強(qiáng)賣(mài)瓜做成字符視頻大概分為三步,通過(guò)讀取視頻,把每一幀轉(zhuǎn)為字符畫(huà),接著把字符畫(huà)表現(xiàn)出來(lái),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-11-11