「他山之石,可以攻玉」,站在巨人的肩膀才能看得更高,走得更遠。在科研的道路上,更需藉助東風才能更快前行。為此,我們特別搜集整理了一些實用的代碼連結,數據集,軟體,編程技巧等,開闢「他山之石」專欄,助你乘風破浪,一路奮勇向前,敬請關注。
地址:https://www.zhihu.com/people/zhuang-ming-xi-31-16
網絡框架模型計算量影響到模型的推斷時間,模型的參數量對設備內存有要求,為了進行模型比較給大家介紹兩種計算FLOPs和Params實用的小工具:01
pip install thop(推薦用這個) 或者 pip install用法:
from torchvision.models import resnet50from thop import profilemodel = resnet50()flops, params = profile(model, input_size=(1, 3, 224,224))print('FLOPs = ' + str(flops/1000**3) + 'G')print('Params = ' + str(params/1000**2) + 'M')class YourModule(nn.Module):model = YourModule()flops, params = profile(model, input_size=(1, 3, 224,224))print('FLOPs = ' + str(flops/1000**3) + 'G')print('Params = ' + str(params/1000**2) + 'M')class YourModule(nn.Module):def count_your_model(model, x, y):flops, params = profile(model, input_size=(1, 3, 224,224),custom_ops={YourModule: count_your_model})print('FLOPs = ' + str(flops/1000**3) + 'G')print('Params = ' + str(params/1000**2) + 'M')02
https://github.com/sovrasov/flops-counter.pytorchpip install ptflops 或者 pip install使用方法:
import torchvision.models as modelsimport torchfrom ptflops import get_model_complexity_info
with torch.cuda.device(0): net = models.densenet161() macs, params = get_model_complexity_info(net, (3, 224, 224), as_strings=True, print_per_layer_stat=True, verbose=True) print('{:<30} {:<8}'.format('Computational complexity: ', macs)) print('{:<30} {:<8}'.format('Number of parameters: ', params))其中print_per_layer_stat用來管理是否輸出每一層的參數量和計算量。本文目的在於學術交流,並不代表本公眾號贊同其觀點或對其內容真實性負責,版權歸原作者所有,如有侵權請告知刪除。
更多他山之石專欄文章,請點擊文章底部「閱讀原文」查看分享、點讚、在看,給個三連擊唄!