metric_logger小解

2023-10-31

今天看见这个一个函数metric_logger,通过搜索资料发现他是utils中的一个MetricLogger类,可称它为度量记录器,因为这种都是自定义的,那我只说说我遇见的这个趴。

我们先来看看他初始化里有什么。

 def __init__(self, delimiter="\t"):
        self.meters = defaultdict(SmoothedValue)
        self.delimiter = delimiter

meters 是用于产生一个带有默认值的dict
delimiter此时还未被定义
接着往下看,

log_msg = self.delimiter.join([
                header,
                '[{0' + space_fmt + '}/{1}]',
                'eta: {eta}',
                '{meters}',
                'time: {time}',
                'data: {data}',
                'max mem: {memory:.0f}'
            ])

header可以不用管,这是一个头部,默认可以为空(加的话就是令其为header = 'Epoch: [{}]'.format(epoch)一般我是这样做的,好观察)
通过join函数连接起来,也就是所谓的各项指标,后续代码总结起来就是通过更新各项运算将结果打印。

def log_every(self, iterable, print_freq, header=None):
        i = 0
        if not header:
            header = ''
        start_time = time.time()
        end = time.time()
        iter_time = SmoothedValue(fmt='{avg:.4f}')
        data_time = SmoothedValue(fmt='{avg:.4f}')
        space_fmt = ':' + str(len(str(len(iterable)))) + 'd'
        if torch.cuda.is_available():#判断GPU可用
            log_msg = self.delimiter.join([
                header,
                '[{0' + space_fmt + '}/{1}]',
                'eta: {eta}',
                '{meters}',
                'time: {time}',
                'data: {data}',
                'max mem: {memory:.0f}'
            ])
        else:
            log_msg = self.delimiter.join([
                header,
                '[{0' + space_fmt + '}/{1}]',
                'eta: {eta}',
                '{meters}',
                'time: {time}',
                'data: {data}'
            ])
        MB = 1024.0 * 1024.0
        for obj in iterable:
            data_time.update(time.time() - end)
            yield obj
            iter_time.update(time.time() - end)
            if i % print_freq == 0 or i == len(iterable) - 1:
                eta_seconds = iter_time.global_avg * (len(iterable) - i)
                eta_string = str(datetime.timedelta(seconds=int(eta_seconds)))
                if torch.cuda.is_available():
                    print(log_msg.format(
                        i, len(iterable), eta=eta_string,
                        meters=str(self),
                        time=str(iter_time), data=str(data_time),
                        memory=torch.cuda.max_memory_allocated() / MB))
                else:
                    print(log_msg.format(
                        i, len(iterable), eta=eta_string,
                        meters=str(self),
                        time=str(iter_time), data=str(data_time)))
            i += 1
            end = time.time()
        total_time = time.time() - start_time
        total_time_str = str(datetime.timedelta(seconds=int(total_time)))
        print('{} Total time: {} ({:.4f} s / it)'.format(
            header, total_time_str, total_time / len(iterable)))

由此见得这个函数是为了统计各项数据,通过调用来使用或显示各项指标,通过具体项目自定义的函数。

(如果有什么错误麻烦各位大佬告知我,感谢各位大佬,仅为自己的一些理解(小白一枚))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

metric_logger小解 的相关文章

  • 为什么 dataclasses.astuple 返回类属性的深层副本?

    在下面的代码中astuple函数正在执行数据类的类属性的深层复制 为什么它不能产生与函数相同的结果my tuple import copy import dataclasses dataclasses dataclass class Dem
  • 多输出堆叠回归器

    一次性问题 我正在尝试构建一个多输入堆叠回归器 添加到 sklearn 0 22 据我了解 我必须结合StackingRegressor and MultiOutputRegressor 经过多次尝试 这似乎是正确的顺序 import nu
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • 如何将 ascii 值列表转换为 python 中的字符串?

    我在 Python 程序中有一个列表 其中包含一系列数字 这些数字本身就是 ASCII 值 如何将其转换为可以在屏幕上回显的 常规 字符串 您可能正在寻找 chr gt gt gt L 104 101 108 108 111 44 32 1
  • pandas - 包含时间序列数据的堆积条形图

    我正在尝试使用时间序列数据在 pandas 中创建堆积条形图 DATE TYPE VOL 0 2010 01 01 Heavy 932 612903 1 2010 01 01 Light 370 612903 2 2010 01 01 Me
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • 如何使用 Python 3 检查目录是否包含文件

    我到处寻找这个答案但找不到 我正在尝试编写一个脚本来搜索特定的子文件夹 然后检查它是否包含任何文件 如果包含 则写出该文件夹的路径 我已经弄清楚了子文件夹搜索部分 但检查文件却难倒了我 我发现了有关如何检查文件夹是否为空的多个建议 并且我尝
  • Spider 必须返回 Request、BaseItem、dict 或 None,已“设置”

    我正在尝试从以下位置下载所有产品的图像 我的蜘蛛看起来像 from shopclues items import ImgData import scrapy class multipleImages scrapy Spider name m
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 如果 PyPy 快 6.3 倍,为什么我不应该使用 PyPy 而不是 CPython?

    我已经听到很多关于PyPy http en wikipedia org wiki PyPy项目 他们声称它比现有技术快 6 3 倍CPython http en wikipedia org wiki CPython口译员开启他们的网站 ht
  • Firebase Firestore:获取文档的生成 ID (Python)

    我可以创建一个新文档 带有自动生成的 ID 并存储对其的引用 如下所示 my data key value doc ref db collection u campaigns add my data 我可以像这样访问数据本身 print d
  • 如何在 Flask 中的视图函数/会话之间传递复杂对象

    我正在编写一个 Web 应用程序 当 且仅当 用户登录时 该应用程序从第三方服务器接收大量数据 这些数据被解析为自定义对象并存储在list 现在 用户在应用程序中使用这些数据 调用不同的视图 例如发送不同的请求 我不确定什么是最好的模式在视
  • 如何在Python脚本中从youtube-dl中提取文件大小?

    我是 python 编程新手 我想在下载之前提取视频 音频大小 任何 YouTube 视频 gt gt gt from youtube dl import YoutubeDL gt gt gt url https www youtube c

随机推荐

  • Installation failed with message INSTALL_FAILED_USER_RESTRICTED错误

    星期一在as上运行代码 真机测试app时候就出现了INSTALL FAILED USER RESTRICTED的安装错误 上周就能连接手机运行测试的啊 然后重新建立个项目 还是如此 详细报错为 It is possible that thi
  • 显著区域和非显著区域特征提取Matlab实现

    显著区域和非显著区域特征提取Matlab实现 在图像处理和计算机视觉中 显著区域和非显著区域的提取是一项非常重要的任务 它可以帮助我们更好地理解图像并提供更有效的信息 在本文中 我们将介绍如何使用Matlab实现显著区域和非显著区域的提取
  • SQL Server 数据库增删改查语句

    在使用SQL Server的时候 需要在新建查询中简单的处理数据库 下面介绍一下SQL基础的增删改查语句 介绍下面用到的变量 Table 数据库表名 Column 字段 Content 内容 1 SQL查询语句 查询全表 select fr
  • 【Adobe】Premiere怎么把视频旋转

    文章目录 1 打开Premiere 新建项目 将视频导入媒体 将视频拖入时间轴中 点击轨道上的视频条 2 依次点击 效果 效果控件 运动 旋转 输入需要旋转的角度数 3 点击上方菜单栏中的 序列 序列设置 选项 4 将 帧大小 和 水平 中
  • 【Nacos源码系列】Nacos心跳机制原理

    文章目录 心跳机制是什么 Nacos心跳机制 客户端心跳 服务端接收心跳 总结 前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到网站 心跳机制是什么 心跳机制是一种用于监测和管理微服务可用性的机制
  • React 与 TS 结合使用时组件传参总结

    在学习 React 时 我们总会遇到在 TS 和 JS 之间切换来开发多个项目 而有时会忘记 TS 的语法 所以编写一下 React 结合 TS 开发时的一些总结知识点 以便后续回顾用 向组件传递基础参数 字符串 数字和布尔值 这节主要是介
  • element-ui深入浅出 v-loading指令

    想必用过 element ui 来开发中后台项目的同学都知道 其内置的 v loading 指令是非常友好 只需要提供一个 Boolean 值就能实现加载动画的一个指令 如果使用过 element ui 但没有使用过 v loading 指
  • Office Tool Plus软件运行错误,缺少.net

    2021 9 29更新 看了Office Tool Plus官方文档之后 发现有了一个新版本 with runtime 版本 这个版本已经包含了 net组件 不用另外安装 net了 如果遇到Office Tool Plus软件运行错误 缺少
  • Retrofit Interceptor网络拦截器

    1 Interceptor interface Interceptor Throws IOException class fun intercept chain Chain Response interface Chain fun requ
  • python压缩数据长度_Python错误:解压缩需要一个长度为4的字符串参数,但这是吗?...

    我正在使用python 2 7 我不明白为什么这行不通 有人可以给我提示 gt gt gt from struct import unpack gt gt gt T2 u xb6 u x01 u x59 u x59 gt gt gt T2
  • Anaconda Scrapy 安装

    anaconda安装 anaconda官网下载下载地址https www anaconda com distribution 安装anaconda没有什么注意事项 只要更改一下安装目录即可 其他的都可以默认下一步 安装成功后 配置一下环境变
  • 在UNIX \ Linux终端中的可视化磁盘空间和磁盘使用情况小工具 - Vizex

    在UNIX Linux终端中的可视化磁盘空间和磁盘使用情况小工具 Vizex 背景 什么是Vizex Linux终端上安装方法 如何使用Vizex 1 vezix 2 vizexdf 3 可以通过 help 使用command调用optio
  • 第一章 命题逻辑 1.4 析取范式与合取范式

    1 4 析取范式与合取范式 这一小节内容较多 我们由浅入深的来 首先要明白简单析取式和简单合取式的定义 定义 我们将命题变项及其否定统称作 文 字 red 文字 文字 简
  • c语言中stat函数,C语言:stat,fstat和lstat函数

    这三个函数的功能是一致的 都用于获取文件相关信息 但应用于不同的文件对象 对于函数中给出pathname参数 stat函数返回与此命名文件有关的信息结构 fstat函数获取已在描述符fields上打开文件的有关信息 lstat函数类似于st
  • Seata导致本地事务@Transactional失效解决方案

    原理 把spirng本地事务数据源设置为seata代理数据源 核心代码 在seata配置类中加入 Bean txManager public DataSourceTransactionManager txManager DataSource
  • JAVA中自定义异常方法抛出异常

    开发工具与关键技术 JAVA中的自定义异常 作者 邓崇富 撰写时间 2019 年 4 月 26 日 一 通过throw抛出异常 使用java内置的异常类可以描述在编程时出现的大部分异常情况 除此之外 用户只需要集成Exception类即可自
  • Docker开启远程进程服务以及VSCode、Idea等IDE连接使用远程

    Docker开启远程进程服务以及VSCode Idea等IDE连接使用远程 Docker远程服务 开发环境大多使用的的是windows系统 服务器运行环境一般采用Linux系统 这时候生成镜像时用到远程连接Docker服务 一 开启Dock
  • win10 nvprof的性能分析表

    交叉访问是全局内存中最糟糕的访问模式 因为它浪费总线带宽 使用多个线程块对基于交叉的全局内存访问重新排序到合并访问 https mp weixin qq com s h2XKth1bTujnrxyXTJ2fwg lt lt
  • Spring Boot 学习研究笔记(二十)-docker部署SpringBoot使用nginx配置域名

    Docker发布项目使用Nginx配置域名 步骤如下 第一步 在Docker 中部署SpringBoot JAR 包 详情请查看 Spring Boot 学习研究笔记 十二 Dcoker 中部署SpringBoot jar包 第二步 配置域
  • metric_logger小解

    今天看见这个一个函数metric logger 通过搜索资料发现他是utils中的一个MetricLogger类 可称它为度量记录器 因为这种都是自定义的 那我只说说我遇见的这个趴 我们先来看看他初始化里有什么 def init self