pytorch续写tensorboard

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

Code

import numpy as np
from torch.utils.tensorboard import SummaryWriterglobal_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 SummaryWriterglobal_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.mzph.cn/news/729365.shtml

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

相关文章

【算法刷题】Day30

1. 汉诺塔问题 原题链接 题干&#xff1a; 算法原理&#xff1a; 利用递归算法 将x柱子上的一堆盘子&#xff0c;借助 y柱子&#xff0c;转移到z 柱子上面 递归函数流程&#xff1a; 当前问题规模为 n1 时&#xff0c;直接将 A 中的最上面盘子挪到 C 中并返回递归将 A 中最…

C++ Qt开发:QFileSystemModel文件管理组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍如何运用QFileSystemModel组件实现文件管理器…

Hypermesh2019快捷键大全

1、F系列 F* | ShiftF* F1 | 打开帮助文件 | color F2 | delete | temp nodes F3 | replace | edges F4 | distance | tran…

开关电源安规测试标准与测试要求

安规测试是对开关电源进行电气性能、安全性能等检测&#xff0c;确保开关电源符合规定并且安全可靠&#xff0c;为开关电源的质量把关。那么开关电源安规测试有哪些测试要求和标准呢&#xff1f; 开关电源安规测试要求 一、测试前 1. 首先&#xff0c;要检查测试环境&#xff0…

游泳——所须知的那些事

游泳是一项大家喜爱的健身活动&#xff0c;带夏季的时候游泳场所成了大家常去的休闲活动场地&#xff0c;但也会存在一定的安全风险&#xff0c;为了保证游泳的安全&#xff0c;需要知道一些事情&#xff1a; 1.清楚的知道游泳池的深度 大部分游泳场馆的泳池是有深浅区的&…

mysql和oracle数据库的区别与联系(值得收藏)

1、mysql和oracle都是关系型数据库。 mysql默认端口&#xff1a;3306 默认用户root oracle默认端口 1521 默认用户system mysql的安装配置和卸载简单&#xff0c;oracle比较麻烦&#xff0c;严重的可能要你重做系统。 oracle在命令行用命令登陆&#xff1a;sqlplus---然后录…

react hook: useimperativeHandle

通过 useImperativeHandle&#xff0c;子组件可以选择性地暴露给父组件某些属性或方法&#xff0c;而不是将所有属性和方法暴露出去。 父组件 获得自组件的 ref&#xff0c;就能通过该 ref 来调用 focus来聚焦等功能 在 forwardRef 包装的组件中&#xff0c;ref 固定地是第二个…

第四篇【传奇开心果系列】Python的自动化办公库技术点案例示例:深度解读Pandas生物信息学领域应用

传奇开心果博文系列 系列博文目录Python的自动化办公库技术点案例示例系列 博文目录前言一、Pandas生物学数据操作应用介绍二、数据加载与清洗示例代码三、数据分析与统计示例代码四、数据可视化示例代码五、基因组数据分析示例代码六、蛋白质数据分析示例代码七、生物医学图像…

Java面试之消息中间件

消息队列 优缺点 特点 解耦异步削峰缺点 系统可用性降低 兜底:代码中try、catch 异常捕捉后直接进行数据库操作,或者 搭建高可用集群,Kafka集群、RocketMQ集群提高复杂度 消息重复(消费端的幂等性设计)、消息丢失(主要集中RabbitMQ)、消息的顺序(业务:1,下单 2,支付 3,发…

STM32/GD32——电源管理单元PWU

芯片选型 Ciga Device — GD32F470系列 PWU介绍 PMU全称Power Management Unit&#xff0c;电源管理单元。 电源域 总共有三大电源域&#xff0c;包括VDD / VDDA域&#xff0c;1.2V域和备份域。 VDD/VDDA 域 提供PMU 常规电源供应以下模块的供电&#xff1a; 看门狗主频晶…

Spring笔记——Bean的生命周期

Spring其实就是一个管理Bean对象的工厂&#xff0c;它负责对象的创建&#xff0c;对象的销毁等。生命周期的本质是&#xff1a;在哪个时间节点上调用了哪个类的哪个方法。我们可能需要在某个特殊的时间点上执行一段特定的代码&#xff0c;因此要了解在这个生命线上有哪些特殊时…

YoloV8改进策略:Block改进|自研Block,涨点超猛|代码详解|附结构图

涨点效果 涨点效果:在我自己的数据集上,mAP50 由0.986涨到了0.993,mAP50-95由0.737涨到0.757,涨点明显! 参考模型 参考的Block,如下图: 我对Block做了修改,修改后的结构图如下: 代码详解 from timm.models.layers import DropPathfrom torch import Tensor def …

C++设计模式-工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)

本文讲解C++设计模式-工厂方法模式 目录 概述 简单工厂模式 工厂方法模式 抽象工厂模式 概述 工厂模式属于创建型模式,大致可以分为三类&#x

代码随想录算法训练营第34天—动态规划02 | ● 62.不同路径 ● *63. 不同路径 II

62.不同路径 https://programmercarl.com/0062.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1ve4y1x7Eu 考点 二维动规 我的思路 当前位置的路线总数为左位置和上位置的路线数之和 视频讲解关键点总结 我的思路没问题&…

如何学习ChatGPT?从入门到精通(附资料下载)

2023 ChatGPT从入门到精通视频教程&#xff08;共30课&#xff09;.zip 学习ChatGPT需要涉及多个层面&#xff0c;包括理解其基本原理、掌握相关技术、以及进行实际的项目应用。以下是一些具体的学习步骤和建议&#xff1a; 理解ChatGPT的基本原理&#xff1a; 深入了解ChatGP…

AI数字虚拟人来了你会失业吗?

AI数字虚拟人是一种由人工智能技术驱动的虚拟实体&#xff0c;以及通过语音和图像等界面与人进行交互。它可以模拟人的外貌、声音和行为&#xff0c;并能回答问题、提供信息和执行特定任务。AI数字虚拟人已经开始在各个领域得到广泛应用&#xff0c;例如客户服务、教育、医疗保…

MySQL的连接池原理和架构雏形

实际上没什么好说的&#xff0c;这里只是简单总结一下连接池原理&#xff0c;顺便梳理下一个用户注册和登录的过程&#xff0c;进一步带您理解一些业务逻辑。 预先设置好连接池内的正在等待的执行单元&#xff08;进程/线程&#xff09;&#xff0c;每个执行单元保持和 MySQL …

Java二级--操作题详解(1)

目录 1.第一套&#xff1a; 1.1 基本操作&#xff1a; 1.2 题解分析&#xff1a; 2.1 简单应用&#xff1a; 2.2 解题分析&#xff1a; 3.1 综合应用&#xff1a; 3.2解题分析&#xff1a; 1.第一套&#xff1a; 1.1 基本操作&#xff1a; 在考生文件夹中存有文件名为J…

Facebook商城号防封养号技巧,速看

由于Facebook商城的高利润空间&#xff0c;越来越多的跨境电商商家注意到它的存在。Facebook作为全球最大、用户量最大的社媒平台&#xff0c;同时也孕育了一个巨大的商业生态&#xff0c;包括广告投放、商城交易等。依托背后的大流量&#xff0c;Facebook商城起号较快&#xf…

【李沐精读系列】GPT、GPT-2和GPT-3论文精读

论文&#xff1a; GPT&#xff1a;Improving Language Understanding by Generative Pre-Training GTP-2&#xff1a;Language Models are Unsupervised Multitask Learners GPT-3&#xff1a;Language Models are Few-Shot Learners 参考&#xff1a;GPT、GPT-2、GPT-3论文精读…