【thop.profile】thop.profile计算网络参数量和计算效率

🍋🍋1.安装thop

        安装thop有两种方式。

🏆第一种

pip install thop

🏆第二种

        用源码编译安装

  1. 从官网下载【github】thop安装压缩包
  2. 下载压缩文件,解压到虚拟环境的site-packages文件下
  3. 激活进入自己的虚拟环境
  4. cd到压缩包解压的路径下
  5. 输入命令python setup.py install,等待安装完成即可

        setup.py源码: 

#!/usr/bin/env python
import os, sys
import shutil
import datetime

from setuptools import setup, find_packages
from setuptools.command.install import install

readme = open("README.md").read()

fp = open("thop/__version__.py", "r").read()
VERSION = eval(fp.strip().split()[-1])

requirements = [
    "torch",
]

# import subprocess
# commit_hash = subprocess.check_output("git rev-parse HEAD", shell=True).decode('UTF-8').rstrip()
# VERSION += "_" + str(int(commit_hash, 16))[:8]
VERSION += "_" + datetime.datetime.now().strftime("%Y%m%d%H%M")[2:]
print(VERSION)

setup(
    # Metadata
    name="thop",
    version=VERSION,
    author="Ligeng Zhu",
    author_email="ligeng.zhu+github@gmail.com",
    url="https://github.com/Lyken17/pytorch-OpCounter/",
    description="A tool to count the FLOPs of PyTorch model.",
    long_description=readme,
    long_description_content_type="text/markdown",
    license="MIT",
    # Package info
    packages=find_packages(exclude=("*test*",)),
    #
    zip_safe=True,
    install_requires=requirements,
    # Classifiers
    classifiers=[
        "Programming Language :: Python :: 3",
    ],
)

🍉🍉2.通过thop.profile计算网络参数量和计算效率

        测试代码:

from torchvision.models import resnet50
from thop import profile
model = resnet50()
input = torch.randn(1, 3, 224, 224)
macs, params = profile(model, inputs=(input, ))
print(macs)
print(params)

        代码步骤  

  1. 定义一个自己的网络结构
  2. 输入一个满足尺寸要求的随机输入
  3. 随机影像数据输入网络
  4. 通过profile(model,(input,))进行网络参数量和运行效率算

        比如自己自定义网络Test:

from thop import profile
 
class Test(nn.Module):
    def __init__(self, input_size, output_szie):
        super(Test, self).__init__()
        self.out = nn.Linear(input_size, output_szie)
    def forward(self, x):
        output = self.out(x)
        return output
 
t = Test(10, 2)
x = torch.randn(4, 10)
flops,params = profile(t, (x,), verbose=False)
print('FLOPs = ' + str(flops / 1000 ** 3) + 'G')
print('Params = ' + str(params / 1000 ** 2) + 'M')

🍌🍌3.增加输出结果可读性

        为了增加结果的可读性,除了自己通过公式进行计算,将结果转换成Gb,Mb或者其他格式的,官网还提供了参数clever_format,可以通过该参数将结果输出成可读性较友好的结果。使用方法如下:

#all thop.clever_format to give a better format of the output.

from thop import clever_format
macs, params = clever_format([macs, params], "%.3f")

🍎🍎4.常见网络参数量展示 

整理不易,欢迎一键三连!!!


送你们一条美丽的--分割线--

🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

不同类型的软件企业该如何有效的管理好你的软件测试团队?

最近在网上发现一篇记录了2012年《[视频]作为测试经理如何有效管理好你的软件测试团队》的文字内容,感谢记录的人,我也保存一下。顺便将演讲中的PPT重点截图也放上来,一并保存了!。由于是现场速记,过度的口语化&#x…

迅为iTOPRK3588开发板系统定制(无法联网)

在上一个小节中讲解了 ubuntu 和 debian 文件系统的定制,但那是在可以运行脚本正常构 建系统的前提下,而本小节则是针对部分特殊用户无法联网的情况。 在 source 目录下存放了已经构建完成的压缩包,如下图所示: 然后使用以下命令…

weblogic控制台登陆console的时候慢

我们在搭建完weblogic后,登录控制台时,会出现等待很长时间的情况。 如下图:怎么解决呢 连接所属服务器,.找到jdk的安装路径 [rootlocalhost lib]# echo $JAVA_HOME/ /usr/java/jdk1.8.0_161/ 进入jre下的lib目录下的security目录&#xff0…

全球市场的新趋势:海外网红营销和私域流量的共同驱动

在数字时代的今天,随着全球互联网的蓬勃发展,网络营销已经不再是一种新鲜事物。然而,随着社交媒体和在线内容创作的兴起,一种新的营销方式崭露头角,它将海外网红营销与私域流量相结合,成为了全球市场的一股…

刘家窑中医院医生王忠:以仁心诠释医者使命

王忠是刘家窑中医院的一名医生,从医多年,积累了丰富的临床经验,挽救了无数病人的生命。他以“想病人之所想,急病人之所急”为自己行医济世的人生格言。 病人说:他是一位可亲可敬的“亲人”。 “医以德为本&#xff0c…

【Proteus仿真】【STM32单片机】拔河游戏设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用按键、LED、动态数码管模块等。 主要功能: 系统运行后,指示灯处于中间位置,数码管显示得分0,当…

MySQL主从复制、读写分离(利用Amoeba和Mycat)、完全同步

目录 一、主从复制 1、概念 1.1主从复制延迟问题: 1.2、MySQL安全和性能配置: 1.3、主从复制的工作过程: 1.4、mysql主从复制注意点: 1.5、MySQL的主从复制的模式: 2、主从复制实验: 二、读写分离&…

【ccf-csp题解】第11次csp认证-第三题-Json查询超详细讲解

此题思路来源于acwing ccfcsp认证辅导课 题目描述 思路分析 此题的难点在于对输入的内容进行解析,题目中说除了保证字符串内容不会有空格存在之外,其它的任意地方都可能出现空格,甚至在某些地方还会出现空行,这样的话&#xff0…

由于找不到msvcp140.dll无法继续执行代码有哪些解决方法

msvcp140.dll是Microsoft Visual C 2015 Redistributable的一个组件,它是运行许多Windows应用程序所必需的。当msvcp140.dll丢失或损坏时,可能会导致以下问题: 1. 程序无法启动或崩溃。 2. 系统出现错误提示,如“找不到msvcp140…

离散卡尔曼滤波器算法详解及重要参数(Q、R、P)的讨论

公开数据集中文版详细描述参考前文:https://editor.csdn.net/md/?not_checkout1&spm1011.2124.3001.6192神经元Spike信号分析参考前文:https://blog.csdn.net/qq_43811536/article/details/134359566?spm1001.2014.3001.5501神经元运动调制分析参考…

Java学习之路 —— 异常、集合

文章目录 1. 异常2. 集合2.1 遍历2.1.1 迭代器2.1.2 增强for循环2.1.3 Lambda 2.2 List2.3 Set2.3.1 HashSet2.3.2 LinkedHashSet2.3.3 TreeSet 2.4 Map 1. 异常 Exception:叫异常,是程序员可以捕捉的。异常又分为了2类: 运行时异常&#x…

SpringBoot整合WebSocket实现订阅消息推送

目录 一、什么是WebSocket1.HTTP协议2.WebSocket协议 二、WebSocket使用场景1.消息推送2.实时聊天3.弹幕4.实时数据更新 三、SpringBoot整合WebSocket(以实现消息推送为例)1.添加依赖2.创建消息类2.WebSocket配置类3.工具类4.测试连接5.服务调用 一、什么…

人工智能 :一种现代的方法 第七章 逻辑智能体

文章目录 前言人工智能 :一种现代的方法 第七章 逻辑智能体7.1 基于知识的智能体7.2 Wumpus世界7.4 命题逻辑7.5 命题逻辑定理证明7.5.1推导和证明7.5.2 归结原理7.5.3 horn子句和限定子句7.5.4 前向链接和后向链接 7.6 有效命题逻辑模型求解7.6.1完备的回溯算法7.6…

MySQL主从延时问题

过线上 MySQL 维护经验的童鞋都知道,主从延迟往往是一个让人头疼不已的问题。 不仅仅是其造成的潜在问题比较严重,而且主从延迟原因的定位尤其考量 DBA 的综合能力:既要熟悉复制的内部原理,又能解读主机层面的资源使用情况&#…

使用PHP编写采集药品官方数据的程序

目录 一、引言 二、程序设计和实现 1、确定采集目标 2、使用PHP的cURL库进行数据采集 3、解析JSON数据 4、数据处理和存储 5、数据验证和清理 6、数据输出和可视化 7、数据分析和挖掘 三、注意事项 1、合法性原则 2、准确性原则 3、完整性原则 4、隐私保护原则 …

如何在 Windows 10/11 上高质量地将 WAV 转换为 MP3

WAV 几乎完全准确地存储了录音硬件所听到的内容,这使得它变得很大并占用了更多的存储空间。因此,WAV 格式在作为电子邮件附件发送、保存在便携式音频播放器上、通过蓝牙或互联网从一台设备传输到另一台设备等时可能无法正常工作。 如果您遇到 WAV 问题&…

【Android Studio调试报错】setContentView(R.layout.activity_main);

报错如下: 解决方法: 1、把参数删除到只剩 .,用自动补齐的方式来查看当前文件的位置是不是,当前左侧工程中layout 所在的位置。在的话它会在自动补齐列表有选项。否则我们选中第一个。 2、选中之后是这样的 然后问题解决&#xf…

飞天使-url路由进阶应用

url 的name属性 为 app01的url设定命名空间 app_name app01urlpatterns [path(, views.index, nameindex),path(login/, views.login, namelogin), ] 上面的namelogin 同时 from django.shortcuts import render,reverse,redirect 便于项目引用 def index(request):userna…

spring cloud-注册中心(Eureka)

一、服务注册中心组件(*) 定义:服务注册中心就是在整个微服务架构单独抽取一个服务,该服务不做项目中任何业务功能,仅用来在微服务中记录微服务、对微服务进行健康状态检查,及服务元数据信息存储常用的注册中心:eurek…

用placement label代替keep margin解决绕线问题

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 通常我们用keepout margin去降低多pin cell类型的密度,这里提供一种替代方案,即使用placement label。好处是只限制多pin cell彼此间距,不会…