pytorch续写tensorboard

news2024/12/28 9:59:41

模型训练到一半有 bug 停了,可以 resume 继续炼,本篇给出 pytorch 在 resume 训练时续写 tensorboard 的简例,参考 [1-3],只要保证 writer 接收的 global step 是连着的就行。

Code

import numpy as np
from torch.utils.tensorboard import SummaryWriter

global_step = 0
log_p = '.'
losses = 1 / np.arange(1, 21)

# 第一次训练
with SummaryWriter(log_dir=log_p) as writer:
    for loss in losses[:10]:
        writer.add_scalar("loss", loss, global_step)
        writer.add_scalar("loss_1", loss, global_step) # 前半段 loss,作为参考
        global_step += 1

# (此处训练因模型有 bug 中断了)

# 重开,resume 训练。续写 tensorboard log 须:
# 1. 接着之前的 global_step
# 2. 同一个 log_dir
with SummaryWriter(log_dir=log_p) as writer:
    for loss in losses[10:]:
        writer.add_scalar("loss", loss, global_step)
        writer.add_scalar("loss_2", loss, global_step) # 后半段 loss,作为参考
        global_step += 1

这里加了 loss_1、loss_2 作为参考,会生成两个 events.out.tfevents 文件,一个是 loss 前半段和 loss_1,另一个是 loss 后半段和 loss_2。如果没有 loss_1、loss_2,就只有一个 events.out.tfevents 文件,显示一条连续的 loss 曲线。

loss
loss_1
loss_2
如果 global step 不连续,但递增,则也能续写,不过 tensorboard 网页显示时中间会自动补一段曲线。即:

import numpy as np
from torch.utils.tensorboard import SummaryWriter


global_step = 0
log_p = '.'
losses = 1 / np.arange(1, 21)

# 第一次训练
with SummaryWriter(log_dir=log_p) as writer:
    for loss in losses[:10]:
        writer.add_scalar("loss", loss, global_step)
        global_step += 1

# 因 bug 中断,且 global step 没接上之前的
# 但续写 tensorboard 时的开始 global step 大过中断时的 global step(即 global step 递增)
global_step += 5 # 从 9 直变 15

# resume 训练,续写 tensorboard
with SummaryWriter(log_dir=log_p) as writer:
    for loss in losses[10:]:
        writer.add_scalar("loss", loss, global_step)
        global_step += 1

loss-with-global-step-gap
其中 9 < global step < 15 那段是没值的,不过网页显示是补了一段曲线。

Conclusion

所以写模型、存 checkpoint 时考虑记一个 global step,resume 训练时 global step 也 resume,就可以续写 tensorboard 了。

References

  1. Tensorboard resume training plot
  2. Tensorboard: Continue training curves #56
  3. Is it possible to add summaries to an existing event file ? #2399

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

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

相关文章

UE5 UE4 关闭/开启引擎开启插件(UE4 MDL资源删除)

问题&#xff1a; 最近遇到了个情况&#xff0c;我安装在UE4.26中的一个NVIDA Omniverse插件&#xff0c;这个插件导致每次生成新的项目时&#xff0c;都会自动开启并在工程中生成一个MDL的文件夹和资源&#xff0c;比较烦。 而且是空工程&#xff0c;也依然自动生成。删除、…

石头里的传奇故事—沉积岩

“ 沉积岩者&#xff0c;地质历史之积淀者也。” 野外发现层状延伸的岩石出露&#xff0c;发现的岩石呈现灰白色&#xff0c;主要矿物为磨圆度好的石英颗粒&#xff0c;石英粒径为1-2mm。岩石质地坚硬。石英颗粒间填充物黏土物质&#xff0c;滴加盐酸未见气泡&#xff0c;斜层…

pytest多重断言插件-pytest-assume

最近准备废弃之前用metersphere做的接口自动化&#xff0c;转战pytest了&#xff0c;先来分享下最近接触到的一个插件&#xff1a;pytest-assume。 在使用这个插件之前&#xff0c;如果一个用例里面有多个断言的话&#xff0c;前面的断言失败了&#xff0c;就不会去执行后面的断…

黑马瑞吉外卖练习笔记

day2 员工管理 完善登录 问题&#xff1a;用户不登录&#xff0c;直接访问系统首页&#xff0c;照样可以正常访问。我们希望&#xff0c;只有登录成功后才可以访问系统中的页面&#xff0c;如果没有登录则跳转到登录页面 怎么实现&#xff1f; 用过滤器或拦截器&#xff0c;在…

3d模型合并后一片漆黑是什么原因,怎么解决---模大狮模型网

当合并多个3D模型后&#xff0c;发现整个合并后的模型显示为一片漆黑通常是由以下几个可能的原因导致的&#xff1a; 材质设置问题&#xff1a;合并后的模型可能存在材质设置错误&#xff0c;导致模型无法正确显示。检查每个模型的材质属性&#xff0c;确保其正确设置&#xff…

仿生蝴蝶制作——前期材料准备

1.扑翼机控制板 PCB免费&#xff0c;元器件大概50元 2.舵机1906B两个GDW DS1906AB 3.2KG扭力金属齿滑翔机扑翼固定翼8g9g高速数字舵机 3.风筝布p31n追风者风筝544软伞布 仿生蝴蝶P31N DIY面料 210格子布 硅胶伞布 4.遥控器富斯i6X&#xff0c;接收机A8S。 5.碳…

【好书推荐-第七期】《RTC程序设计:实时音视频权威指南》(音视频开发必看!)

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;洲与AI。 &#x1f388; 本文专栏&#xff1a;本文收录…

新版微交易微盘系统/外汇期货贵金属虚拟币微盘源码

1.环境 nginx 1.16或者 apache2.4 php5.6 Mysql 5.6 2.上传数据库 3.设置伪静态thinkphp就行 4.修改 application/database.php 中 数据库名称&#xff0c;密码 5.后台 域名/admin 账号admin 密码123456 6.前台 域名 账号13999999999密码123456 新版微交易微盘系统/外汇期…

转载-七种Java常用序列化框架的选型与对比

七种Java常用序列化框架的选型与对比 本文章转自&#xff1a;乐字节 文章主要讲解&#xff1a;Java常用序列化框架 获取更多前端相关资料可以点击链接加入群聊【Java技术交流群】&#xff1a;正在跳转暗号&#xff1a;166 转载地址&#xff1a;七种Java常用序列化框架的选型…

Cyber RT 组件

场景 无人车上的传感器数据可能需要被融合&#xff0c;比如在车辆上安装了多颗雷达&#xff0c;不同雷达由于安装位置与自身参数差异&#xff0c;可探测的角度、范围、距离等都是不尽相同的&#xff0c;现在需要将不同雷达感知到的数据融合在一起以建立车辆所处的完整环境&…

SAP 设置后台JOB批量扩充MRP区域

SAP 升级了HANA以后,不良品仓位的控制都是由MRP区域来控制了,当我们创建物料的时候,希望系统能自动扩充物料到NMRP的区域。我们可以通过创建后台JOB,定时的让程序跑后台JOB的方式来扩充物料的MRP区域 1、执行程序—SE38—RMMDDIBE 2、Tcode:MMD1创建MRP参数文件 点击选…

搜索算法(DFS和BFS 蓝桥杯 C++)

目录 题目一&#xff08;N皇后问题&#xff09;&#xff1a; 代码&#xff1a; 题目二&#xff08;路径之谜&#xff09;&#xff1a; 代码&#xff1a; 题目三&#xff08;最大数字&#xff09;&#xff1a; 代码&#xff1a; 题目四&#xff08;长草&#xff09;&#…

极简技术 | 能够很方便地解决教学中的实际问题

如今&#xff0c;极简教育技术开始兴盛&#xff0c;作为一种能够很方便地解决教学中的实际问题技术体系&#xff0c;“极简主义”与“教育技术”又能碰撞出什么样的火花呢&#xff1f; 一、教育要“技术化”&#xff0c;也可以“极简化” “极简主义”是一种生活理念或哲学&a…

深入理解Docker

文章目录 1 Docker理论1.1 背景知识1.2 是什么1.3 Docker基本三要素1.4 镜像原理1.5 安装教程 2 Docker常用命令2.0 防火墙相关命令2.1 镜像命令2.2 容器命令2.3 进阶命令 3. 实战之Docker部署springboot项目步骤一&#xff1a;Springboot项目配置1.1 添加docker的maven依赖1.2…

spring boot概述

SpringBoot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。 该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。 通过这种方式&#xff0c;SpringBoot致力于在蓬勃发展的快速应用开发…

“祖传代码“的是是非非

程序员眼中的“祖传代码”&#xff0c;就像一本古老而神秘的魔法书&#xff0c;藏着无穷的智慧和技巧&#xff0c;有些代码像家传宝贝&#xff0c;有些像祖传秘方。快来分享一下你遇到的“祖传代码”吧~ 祖传代码的历史与文化价值 祖传代码通常指的是经过长时间使用和传承的代…

Linux操作系统——进程信号

1.信号的概念 生活当中哪些场景算信号呢&#xff1f;比如说你晚上调了个闹钟&#xff0c;然后第二天早上你听到了闹钟响了你就知道该起床了&#xff0c;这种机制就叫做信号机制。在生活中我们的信号是非常非常多的&#xff0c;比如说有&#xff1a;红绿灯&#xff0c;下课铃声…

网络编程作业day3

项目作业1&#xff1a;TCP机械臂测试 客户端操作代码&#xff1a; /*机械臂客户端控制代码*/ #include <myhead.h>#define SER_IP "192.168.125.176" //机械臂服务器IP地址 #define SER_PORT 8888 //机械臂服务器端口号 #define CLI_IP "…

代码随想录算法训练营第35天 | 435. 无重叠区间 ,763.划分字母区间 , 56. 合并区间

贪心算法章节理论基础&#xff1a; https://programmercarl.com/%E8%B4%AA%E5%BF%83%E7%AE%97%E6%B3%95%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 435. 无重叠区间 题目链接&#xff1a;https://leetcode.cn/problems/non-overlapping-intervals/ 思路&#xff1a; 相信…

理疗美容按摩小程序有哪些功能

医疗、美容和按摩等行业是一个快速发展的领域&#xff0c;很多美容院和理疗中心都希望通过小程序来提升服务质量和用户体验。下面我们来看看一个理疗美容小程序可以具备哪些功能&#xff0c;并介绍如何使用这些功能。 1. **在线预约服务**&#xff1a;用户可以通过小程序预约理…