深度学习-Tensorboard可视化面板
Posted 吾仄lo咚锵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习-Tensorboard可视化面板相关的知识,希望对你有一定的参考价值。
文章目录
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介
Tensorboard是Tensorflow官方提供的实用可视化工具,可以将模型训练过程中的各种数据保存到本地,然后在web端可视化展现这些信息,直观便捷的方便我们进行优化调试。
官方文档:https://github.com/tensorflow/tensorboard/blob/master/README.md
相应环境搭建可参考我这篇博客:深度学习-Pytorch环境搭建(Windows)
安装
使用pip安装即可。
pip install tensorboard
SummaryWriter
新建
新建一个SummaryWriter对象,保存待观测数据。
def __init__(
self,
log_dir=None,
comment="",
purge_step=None,
max_queue=10,
flush_secs=120,
filename_suffix="",
):
重要参数:
- log_dir
保存目录,默认为runs/**CURRENT_DATETIME_HOSTNAME** - comment
保存文件名中添加comment
一般不同实验数据,可以用不同的路径以区分,如runs/exp1
。
新建好Writer对象后,便是往其中添加各种类型的数据,这里介绍主要的几种:数字 (scalar)、图片 (image)、直方图 (histogram)、模型 (graph)。
添加数字
使用add_scalars()
添加数字,也是最常用的。
Args:
main_tag (string): The parent name for the tags
tag_scalar_dict (dict): Key-value pair storing the tag and corresponding values
global_step (int): Global step value to record
walltime (float): Optional override default walltime (time.time())seconds after epoch of event
参数:
- main_tag
标记名,文件名前缀 - tag_scalar_dict
k-v格式存储的数据 - global_step
全局步长值,即标注当前是第几步 - walltime
记录发生的时间,默认为 time.time()
例子:
from torch.utils.tensorboard import SummaryWriter
import numpy as np
writer = SummaryWriter(log_dir='runs/test')
r = 5
for i in range(100):
writer.add_scalars(main_tag='run_14h',
tag_scalar_dict='xsinx': i * np.sin(i / r), 'xcosx': i * np.cos(i / r), 'tanx': np.tan(i / r),
global_step=i)
writer.close()
运行
复制日志的绝对路径
进入conda环境
win+r,activate base,conda activate 你的环境名
运行tensorboard,指定前面复制的路径,可以自定义端口号,默认6006
tensorboard --logdir=日志路径 --port=自定义端口号
打开http://localhost:6006/或http://127.0.0.1:6006/,即可实现web可视化。
页面上相关设置可以自己探索~
添加图片
使用add_image()
添加图片。
Args:
tag (string): Data identifier
img_tensor (torch.Tensor, numpy.array, or string/blobname): Image data
global_step (int): Global step value to record
walltime (float): Optional override default walltime (time.time())seconds after epoch of event
dataformats (string): Image data format specification of the form CHW, HWC, HW, WH, etc.
参数:
- tag
标记名 - img_tensor
图片源,可以是torch.Tensor或numpy.array等格式 - global_step
全局步长值,即标注当前是第几步 - dataformats
图片源格式,也就是图片Height、Width、Channel的顺序,默认(3, H, W)。
例子:
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image
writer = SummaryWriter(log_dir='runs/image')
img_PIL = Image.open('icon.jpg')
img_array = np.array(img_PIL)
print(img_array.shape)
writer.add_image(tag='image', img_tensor=img_array, dataformats='HWC')
writer.close()
(
插播反爬信息)博主CSDN地址:https://wzlodq.blog.csdn.net/
运行同上一节。
添加直方图
使用add_histogram()
添加直方图。
Args:
tag (string): Data identifier
values (torch.Tensor, numpy.array, or string/blobname): Values to build histogram
global_step (int): Global step value to record bins (string): One of 'tensorflow','auto', 'fd', .... This determines how the bins are made. You can find other options in: https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html
walltime (float): Optional override default walltime (time.time()) seconds after epoch of event
参数解释同上。
例子:
from torch.utils.tensorboard import SummaryWriter
import numpy as np
writer = SummaryWriter(log_dir='runs/histogram')
for i in range(10):
x = np.random.random(1000)
writer.add_histogram('distribution centers', x + i, i)
writer.close()
运行同上。
添加模型结构
使用add_graph()添加图片。
Args:
model (torch.nn.Module): Model to draw.
input_to_model (torch.Tensor or list of torch.Tensor): A variable or a tuple of variables to be fed.
verbose (bool): Whether to print graph structure in console.
use_strict_trace (bool): Whether to pass keyword argument `strict` to `torch.jit.trace`. Pass False when you want the tracer to record your mutable container types (list, dict)
参数:
- model
模型 - input_to_model
模型输入 - verbose
是否在控制台打印模型结构
例子:
import torch
from torch import nn
from torch.utils.tensorboard import SummaryWriter
# 自定义神经网络,需继承nn.Module
class MyNet(nn.Module):
def __init__(self) -> None:
super().__init__()
self.model = nn.Sequential(
nn.Conv2d(3, 32, 5, padding=2),
nn.MaxPool2d(2),
nn.ReLU()
)
def forward(self, x):
x = self.model(x)
return x
writer = SummaryWriter(log_dir='runs/graph') # 可视化
net = MyNet()
input = torch.ones((64, 3, 32, 32))
writer.add_graph(net, input)
writer.close()
可以双击展开或收起,查看模型细节。
还可以添加嵌入向量等,参考文档照葫芦画瓢~
实战
构建一个简单的线性模型,可视化损失、参数的变化。
from torch.utils.tensorboard import SummaryWriter
import numpy as np
import torch
from torch import nn
writer = SummaryWriter(log_dir='runs/graph')
data = torch.randn(3, 5) # 数据
model = nn.Sequential(nn.Linear(5, 3), nn.ReLU(), nn.Linear(3, 1)) # 模型
optimizer = torch.optim.Adam(model.parameters(), lr=1e-2)
epochs = 100
for epoch in range(epochs):
loss = (model(data).sum()-1)**2
optimizer.zero_grad()
loss.backward()
optimizer.step()
writer.add_scalar('Loss', loss.item(), epoch) # 记录损失的变化
writer.add_histogram('model[0].weight', model[0].weight, epoch) # 记录参数的变化
writer.add_graph(model, data) # 可视模型结构
writer.close()
原创不易,请勿转载(
本不富裕的访问量雪上加霜)
博主首页:https://wzlodq.blog.csdn.net/
来都来了,不评论两句吗👀
如果文章对你有帮助,记得一键三连❤
以上是关于深度学习-Tensorboard可视化面板的主要内容,如果未能解决你的问题,请参考以下文章
[十九]深度学习Pytorch-可视化工具TensorBoard
深度学习pytorch使用tensorboard可视化实验数据