模型参数量(Parameters)和计算量(FLOPs)获取【使用thop】

news2024/9/20 1:01:03

Tips: 针对部分开源代码没有提供相关计算网络参数量和计算量的代码。这里给出一个通用的获取网络的参数量和计算量的方法。 使用thop即可快速获取

1 模型参数量和计算量

参数量#params 即为网络模型中含有多少个参数,与输入的数据无关,主要与模型的结构有关系;其主要影响模型运算是所需要的内存或显存

计算量#FLOPs 通常使用FLOPs(Floating point operations,浮点运算数量)来表示计算量,其主要来衡量算法/模型的复杂度。论文中一般用GFLOPs来表示,1GFLOPs=10^9 FLOPs;

2 安装thop

pip install thop

3 示例代码

####(如计算如下网络的参数量和计算量)####

import torch
import torch.nn as nn

# SENet
class SELayer(nn.Module):
    def __init__(self, channel, reduction=16):
        super(SELayer, self).__init__()
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.fc = nn.Sequential(
            nn.Linear(channel, channel // reduction, bias=False),
            nn.ReLU(inplace=True),
            nn.Linear(channel // reduction, channel, bias=False),
            nn.Sigmoid()
        )

    def forward(self, x):
        b, c, _, _ = x.size()
        y = self.avg_pool(x).view(b, c)
        y = self.fc(y).view(b, c, 1, 1)
        return x * y.expand_as(x)

####(thop代码,可以自行优化)####

import thop
if __name__ == '__main__':
    # 输入1 channel
    model = SELayer(channel=64)
    # (1, 64, 640, 640) 输入的图片尺寸
    x = torch.randn(1, 64, 640, 640)
    flops, params = thop.profile(model, inputs=(x,))
    print("%s | %s | %s" % ("Model", "Params(M)", "FLOPs(G)"))
    print("------|-----------|------")
    print("%s | %.7f | %.7f" % ("模型  ", params / (1000 ** 2), flops / (1000 ** 3)))

4 结果展示

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/481961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 windows 端使用 vscode + ubuntu WSL 优雅的使用原生 linux 的 gcc/g++ 编译

当我在windows上进行c的开发时,通常会使用 vs 但缺点也比较明显,他不原生的 gcc 编译器,其次 vs 这个 IDE 太过于庞大,当然也有很多人会使用 vscode 但是,在 windows 中安装 gcc/g 的过程极为复杂,且因为我…

【C++】右值引用完美转发

文章目录 右值引用和左值引用左值和右值概念左值引用 && 右值引用右值引用使用场景和意义左值引用的使用场景**左值引用的短板:**右值引用和移动语义STL容器增加的接口move函数右值引用的其他使用场景 完美转发万能引用完美转发保持值的属性完美转发的使用场景 右值引用…

Python基础合集 练习16(函数的递归)

简单的递归 1.求阶乘 比如输入为3 那么3216 输出就为6 def fun(n): if n1: return 1 return n*fun(n-1) numint(input(‘输入数字:’)) print(‘该数的阶乘为:’,fun(num)) 2.数列 这个数从第三项开始每一项为前一项的两倍 假如输入为6 则[1,1,2,3,5,8] 第六位为…

Python 时间处理模块

import time # 导入时间模块 s_time time.time() # 程序开始的时间 time.sleep(3) # 慢三秒 print(f’cost{time.time()-s_time}’) # 用当前时间减去之前程序开始的时间 print(time.localtime()) # 打印当前的时间 时间对象 print(time.gmtime()) # 打印当前时间&#xff0…

Python基础合集 练习18(类与对象2)

访问限制 class Dog_dog(): def init(self, name) -> None: self.__name name # 定义私有属性 def run(self):print(我跑的很快!我的名字是, self.__name)dog1 Dog_dog(‘papi’) dog1.run() print(dog1._Dog_dog__name) # 加入类名访问 print(’-----分界线-----’) p…

Mix.AI.How is your Chirper?

Chirper.ai是什么? 一个名为Chirper的AI驱动的社交网络平台。Chirper为AI用户建立了一个独立的环境,与传统的人类社交媒体平台有所区别。是一个独特的交互和协作空间,只有AI可以进行交流和互动。 shadow 看看我的AI化身每天都在干什么&#x…

Python---多线程编程、基于Socket完成服务端程序开发、基于Socket完成客户端程序开发

1. 进程: 程序在操作系统内运行,即成为一个运行进程 线程: 进程内部可以有多个线程,程序的运行本质上就是由进程内部的线程在实际工作的。 并行执行: 多个进程同时在运行,即不同的程序同时运行&#xff…

【Floyd】CF1204 Anna, Svyatoslav and Maps

看错题意了一直看不懂题解浪费了好多时间... 思路: 先去考虑特殊的地方: 100 子序列 最短路径 一个个剖析: 100:考虑Floyd 子序列:DP?不懂 最短路径:考虑Floyd 我们要求的是子序列的方案&#xff0…

【MySQL 8.0】搭建一个使用 SSL 加密的 MySQL 主从复制拓扑(基于 Binlog 行复制)

文章目录 先决条件搭建配置源、副本服务器选项文件 验证启用了 SSL 连接创建复制用户获取复制源服务器的二进制日志坐标配置复制源开启复制 验证进阶 之前,我们一起搭建了一个极简 MySQL 主从复制拓扑(基于 Binlog 行复制),这是一…

请问这个网址怎么用httpx 把json数据取出来

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 空山新雨后,天气晚来秋。 大家好,我是皮皮。 一、前言 前几天在Python铂金群【gyx】问了一个Python网络爬虫处理的问题&#xf…

【JavaEE】认识线程

目录 1、什么是线程 2、为什么引入线程 2.1、线程的优缺点 3、CPU的工作原理 4、线程和进程的关系 4.1、线程和进程的入口函数 4.2、线程独享的资源 1、什么是线程 一个进程中可以有一个或者多个线程,每个线程都是一个独立的执行流。多个线程之间,也…

嵌入式开发--无刷电机学习3--帕克变换

帕克变换的物理意义 前面说到克拉克变换的物理意义,是将三相定子线圈产生磁场的过程,等效为2个正交放置的线圈,来产生同样的磁场。通过控制这两个正交线圈即可等效控制三相定子线圈。 还有一个问题,定子线圈产生的磁场&#xff…

集群与存储

所谓集群就是通过高速网络将很多服务器集中起来一起提供一种服务,在客户端看起来就是只有一个服务器 任务调度是集群中的核心系统 HPC高性能计算集群 LB负载均衡 HA高可用 LVS工作模式 NAT 网络地址转换 -m DR 路由模式 节点需要VIP -g TUN 隧道模式 -i 调度…

「Codeforces」D. Big Brush

D. Big Brush https://codeforces.com/contest/1638/problem/D 题目描述 给你一张 n m n\times m nm 大的网格纸,你有一把 2 2 2 \times 2 22 的刷子,每次只能涂满这么多,即 ( i , j ) 、 ( i 1 , j ) 、 ( i , j 1 ) 、 ( i 1 , j …

第二十二章 光照贴图

光照贴图过程将预先计算场景中静态物体表面的亮度,并将结果存储在称为“光照贴图”的纹理中供以后使用。光照贴图可以包含直接光照和间接光照,以及阴影效果。但是,烘焙到光照贴图中的数据无法在运行时更改,这就是为什么移动静态物…

Python入门教程+项目实战-12.1节: 字典的基础概念

目录 12.1.1 理解字典类型 12.1.2 字典的类型名 12.1.3 字典的定义 12.1.4 在循环中遍历字典 12.1.5 字典的键类型 12.1.6 知识要点 12.1.7 系统学习python 12.1.1 理解字典类型 在日常生活中,我们常常会接触到“字典”这种数据类型,例如一本书籍…

排序篇:直接插入、希尔、直接选择和堆排序(C语言)

目录 前言: 一:插入排序 (1)直接插入排序 基础思路(有个印象就行,主要看单趟): 单趟排序: 完整排序: 时间复杂度分析: (2)希尔排序 基础思路(有个印象就行,主要看单趟)&#…

【2023 年第十三届 MathorCup 高校数学建模挑战赛】D 题 航空安全风险分析和飞行技术评估问题 27页论文及代码

【2023 年第十三届 MathorCup 高校数学建模挑战赛】D 题 航空安全风险分析和飞行技术评估问题 27页论文及代码 1 题目 D 题 航空安全风险分析和飞行技术评估问题 飞行安全是民航运输业赖以生存和发展的基础。随着我国民航业的快速发展,针对飞行安全问题的研究显得…

网络编程 总结一

一、网络基础: 概念:1> 网络编程的本质就是进程间的通信,只不过进程分布在不同的主机上 2>在跨主机传输过程中,需要确定通信协议后,才可以通信 1. OSI体系结构(重点) 定义7层模型&…

针对近日ChatGPT账号大批量封禁的理性分析

文 / 高扬 这两天不太平。 3月31号,不少技术圈的朋友和我闲聊说,ChatGPT账号不能注册了。 我不以为然,自己有一个号足够了,并不关注账号注册的事情。 后面又有不少朋友和我说ChatGPT账号全部不能注册了,因为老美要封锁…