5种方法获取Torch网络模型参数量计算量等信息 |
您所在的位置:网站首页 › aoci2279vwhe参数 › 5种方法获取Torch网络模型参数量计算量等信息 |
目录
模型参数量和计算量是什么为什么要统计模型参数量和计算量常见的模型参数量和计算量的计算方法代码方法1 利用torch自带方法,自写函数方法2 torchsummary.summary方法3 torchstat.stat方法4 thop.profile方法5 ptflops.get_model_complexity_info
模型参数量和计算量是什么
计算量是指网络模型需要计算的运算次数,参数量是指网络模型自带的参数数量多少计算量对应时间复杂度,参数量对应于空间复杂度计算量决定了网络执行时间的长短,参数量决定了占用显存的量
为什么要统计模型参数量和计算量
好的网络模型不仅要求精度准,还要要求模型的参数量和计算量不大,才能有利于部署统计模型的参数量和计算量可以用于不同网络模型之间的对比分析有的模型虽然参数量相同,但是可能因为连接方式和结构等不同而导致计算量不同
常见的模型参数量和计算量的计算方法
卷积层
Time
∼
O
(
∑
l
=
1
D
M
l
2
⋅
K
l
2
⋅
C
l
−
1
⋅
C
l
)
Space
∼
O
(
∑
l
=
1
D
K
l
2
⋅
C
l
−
1
⋅
C
l
+
∑
l
=
1
D
M
2
⋅
C
l
)
\begin{array}{r} \text { Time } \sim O\left(\sum_{l=1}^{D} M_{l}^{2} \cdot K_{l}^{2} \cdot C_{l-1} \cdot C_{l}\right) \\ \text { Space } \sim O\left(\sum_{l=1}^{D} K_{l}^{2} \cdot C_{l-1} \cdot C_{l}+\sum_{l=1}^{D} M^{2} \cdot C_{l}\right) \end{array}
Time ∼O(∑l=1DMl2⋅Kl2⋅Cl−1⋅Cl) Space ∼O(∑l=1DKl2⋅Cl−1⋅Cl+∑l=1DM2⋅Cl)
其中, K K K表示核尺寸, C l C_l Cl代表数量第 l l l层通道数 全连接层 计 算 量 = 参 数 量 = w e i g h t i n × w e i g h t o u t 计算量=参数量=weight_{in}×weight_{out} 计算量=参数量=weightin×weightout 代码定义网络与输入,需安装torch和torchvision包 import torch.nn as nn import torch from torchvision.models import vgg16 net = vgg16() x = torch.rand(1,3,224,224) 方法1 利用torch自带方法,自写函数自定义函数,参考自 https://blog.csdn.net/qq_33757398/article/details/109210240 '''方法1,自定义函数 参考自 https://blog.csdn.net/qq_33757398/article/details/109210240''' def model_structure(model): blank = ' ' print('-' * 90) print('|' + ' ' * 11 + 'weight name' + ' ' * 10 + '|' \ + ' ' * 15 + 'weight shape' + ' ' * 15 + '|' \ + ' ' * 3 + 'number' + ' ' * 3 + '|') print('-' * 90) num_para = 0 type_size = 1 # 如果是浮点数就是4 for index, (key, w_variable) in enumerate(model.named_parameters()): if len(key) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |