pytorch SummaryWriter保存日志的方法
作者:magic_ll 发布时间:2023-07-24 22:07:31
在pytorch框架中,关于日志的保存,其中一种方式就是借鉴使用了tensorboard的库。所以我们需要在环境中安装tensorboard库,然后再在工程中进行该库的调用
1 安装与导入
安装:conda install tensorboardX 或者 pip install tensorboardX
导入
from tensorboardX import SummaryWriter
writer = SummaryWriter(logPath)
...
writer.close()
2 添加需要保存标量数据
add_scalar(tag, scalar_value, global_step=None) 从源码中我们能看到核心的三个参数为前三个。通俗的讲分别代表
tag:图的标签名,唯一标识
scalar_value:y轴数据,标量数据的具体数值
global_step:x轴数据,要记录的全局步长值
add_scalars(main_tag, tag_scalar_dit)多项标题记录方法,其中:
main_tag —— 该图的标签
tag_salar_dict —— 字典形式的tag-scalar_value对
源码中也有例子:
from tensorboardX import SummaryWriter
import numpy as np
writer = SummaryWriter('run/logs')
max_epoch = 100
for x in range(max_epoch):
writer.add_scalar('t/y=2x', x * 2, x) #x*2为y轴数据,x为x轴数据
writer.add_scalar('t/y=pow_2_x', 2^x, x)
writer.add_scalars('scalar_group', {"xsinx": x * np.sin(x),
"xcosx": x * np.cos(x)}, x)
writer.close()
运行完该脚本后,运行tensorboard命令:tensorboard --logdir=./run/
在浏览器中打开链接:【http://localhost:6006/】
3 添加需要保存图片数据
从源码中我们能看到add_image
的主要参数如下。通俗的讲分别代表
tag:曲线图名字,唯一标识
img_tensor:图片数据,类型要求为 tensor/numpy/string 等
global_step:要记录的全局步长值
dataformats:图片输入的默认维度。注意是"CHW"
from tensorboardX import SummaryWriter
import numpy as np
img = np.zeros((3, 100, 100))
img[0] = np.arange(0, 10000).reshape(100, 100) / 10000
img[1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000
img_HWC = np.zeros((100, 100, 3))
img_HWC[:, :, 0] = np.arange(0, 10000).reshape(100, 100) / 10000
img_HWC[:, :, 1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000
writer = SummaryWriter('run/logs')
writer.add_image('my_image', img, 0)
# If you have non-default dimension setting, set the dataformats argument.
writer.add_image('my_image_HWC', img_HWC, 0, dataformats='HWC')
writer.close()
4 直方图的记录
画直方图主要为了看参数的分布状态,使用add_histogram(tag, values, global_step=None, bins=’tensorflow’, walltime=None)
,其中tag, value, global_step的含义同上,示例如下:
# 每个epoch,记录梯度,权值
for name, param in net.named_parameters():
writer.add_histogram(name + '_grad', param.grad, epoch)
writer.add_histogram(name + '_data', param, epoch)
5 网络结构的记录
展示结构图使用add_graph(model, input_to_model=None, verbose=False)
writer = SummaryWriter(comment='test_your_comment', filename_suffix="_test_your_filename_suffix")
# 模型
fake_img = torch.randn(1, 3, 32, 32)
yolo = Yolo(classes=2)
writer.add_graph(yolo, fake_img)
writer.close()
来源:https://blog.csdn.net/magic_ll/article/details/129663819
猜你喜欢
- 常见的SQL问题:◆选择重复,消除重复和选择出序列有例表:empemp_no name age001 Tom 17002 Sun 14003
- 两段使用键盘的上下键进行选择的代码:<Script Language="JScript"> &
- 在Thread和Process中,应当优选Process,因为Process更稳定,而且,Process可以分布到多台机器上,而Thread
- 在这里给出是的WindowsXP操作系统下的安装过程一、下载安装文件到MySQL官方网站找到ZIP文件提示:有些是安装文件,安装时会有提示,
- <?php $url='test.php?1=1'; $contents="fjka;fjsa;#page#
- 缓存是基于Application实现的CacheState类,建议实例化时用名Cache程序代码<% Class Cache
- 本文实例为大家分享了python tkinter实现弹窗输入输出的具体代码,供大家参考,具体内容如下代码如下:from tkinter im
- 自去年以来,我们正在开发区块链(Blockchain)业务。最近使用过Ethereum并使用PHP,所以我想我们应该聊聊这个话题。这里有个前
- 1.查看mysql上都有哪些库mysql> show databases \G***************************
- 在大型的ASP项目中,很多的页面都涉及到分页、翻页功能。如果每个页面都写一个翻页的程序的话,这样的工作即降低了工作效率,也不利于工程的模块化
- 本文实例讲述了Python中super关键字用法。分享给大家供大家参考。具体分析如下:在Python类的方法(method)中,要调用父类的
- 启发式评估法(Heuristic Evaluation)是一种用来发现用户界面设计中的可用性问题从而使这些问题作为再设计过程中的一部分被重视
- body {font-family: Arial, sans-serif; }这是我迄今
- 一、表单验证form1、创建一个新的表单:<form id="id是唯一的,不可重复" name=“可重复”,me
- 分页查询是经常能够遇到的问题,我们首先看看分页查询存在的理由:方便用户:用户不可能一次察看所有数据,所以一页一页的翻看比较好。提高性能:一次
- 1.1.1 摘要 相信大家对于SQL Transcation再熟悉不过,它确保了数据库的数据一致性和安全性,尤其在对数据执行增删时,如果发生
- 前段时间嗷嗷有发过"好玩的放大镜效果",今天看了下,发现还有简单的方法也能够实现,即利用内外补丁的调整。有兴趣的可以在琢
- 接着上一篇,统一思想,遵循标准。如何遵循标准,其实标准有很多,结构标准,表现标准,行为标准。选择标准规范,就优先选择W3C推荐的标准。结构标
- 使用Python绘制正态分布曲线,借助matplotlib绘图工具;#-*-coding:utf-8-*-"""
- smtp指令书接上文邮件实现详解,这里我们及我们简单复习一下smtp的指令如下:telnet smtp.163.com 25[outpout