因为在做实验的时候,需要记录数据,为了方便记录数据,可以使用tensorboard在运行的过程中就将实验结果记录其中,以对比那次实验的结果是最好的.
tensorboard常用的功能有,保存模型网络结构,保存训练集的损失,下面就介绍tensorboard的几个常用的功能.
这个面板图源自:https://blog.csdn.net/Zhangsan0219/article/details/121763073
我是参考这个作者重新写了一遍笔记,便于自己记录.
# -*- coding: utf-8 -*-
# @Author :WenShuai Xiao
# @Time:2022-05-30
# @File:Tensorboard_line.py
import os.path
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from tqdm import tqdm
if __name__=='__main__':
print('测试开始')
'''
画线
启动命令 tensorboard --logdir=logs
指定端口 tensorboard --logdir=logs --port=6007
'''
# 创建编辑器,保存日志
# log_dir保存路径
logs_path=os.path.join("./logs","trian")
if not os.path.exists(logs_path):
print('路径不存在')
os.makedirs(logs_path)
writer=SummaryWriter(log_dir=logs_path)
# 模拟添加每个epoch的loss和Acc
for n_iter in tqdm(range(100)):
# writer.add_scalar函数用于添加标量值
# add_scalar(tags, scalar_value, global_stop)
# tags: string, 记录对象的标签
# scalar_valud: float, 记录的数值
# global_step: int, x轴的数值
writer.add_scalar('Loss/Train',np.random.random(),n_iter)
writer.add_scalar('Loss/Test',np.random.random(),n_iter)
writer.add_scalar('Accuracy/train',np.random.random(),n_iter)
writer.add_scalar('Accuracy/test',np.random.random(),n_iter)
writer.close()
print('测试结束')
运行完之后就会在logs文件下生成记录的文件,然后找到这个路径,在这个路径下面输入cmd->回车,就可以直接进入这个路径下的dos命令
然后输入以下代码,把最后一个链接复制到浏览器就可以看到了结果
# 激活环境
conda activate pytorch
# 使用tensorboard打开路径
tensorboard --dirlogs=logs
# =====================================================
'''
writer.add_scalars(main_tag, tag_scalar_dict, global_step=None)
该函数用于将多个scalar添加到同一个图中
main_tag: string, 父标签
tag_scalar_dict: dict, 将多个scalar组合在一起的字典对象,
该字典的key表示tag, value为记录的scalar值
global_step: int, 图片的x轴
'''
# ====================================================
for i in tqdm(range(100),desc='多张图画在一起'):
writer2.add_scalars(
'run_14h',{
'xsinx':i*np.sin(i/5),
'xcosx':i*np.cos(i/5),
'tanx':np.tan(i/5)
},i
)
writer2.close()
后面的直方图,等我需要的时候在继续补充笔记
# -*- coding: utf-8 -*-
# @Author :WenShuai Xiao
# @Time:2022-05-30
# @File:Tensorboard_model.py
from torch import ones
from torch.utils.tensorboard import SummaryWriter
from torch.nn import Linear,ReLU,Sequential
import os
if __name__=='__main__':
logs_path = os.path.join("./logs", "model_graph")
if not os.path.exists(logs_path):
print('路径不存在')
os.makedirs(logs_path)
writer=SummaryWriter(logs_path)
# 写一个模型
model=Sequential(
Linear(1,10),
ReLU(),
Linear(10,1)
)
data=ones(10,1)
'''
add_graph
画出模型的结构
模型双击查看
'''
writer.add_graph(model=model,input_to_model=data)
writer.close()
有的时候需要调参对比实验的结果,可以使用这个方法将每次的实验结果保存到tensorboard中,如果学会了bash语法,直接可以使用bash语法自动传参数,这样就不用自己操作了,只需要耐心的等待实验结果就好了.
# -*- coding: utf-8 -*-
# @Author :WenShuai Xiao
# @Time:2022-05-30
# @File:Tensorboard_mutil_model.py
import os
import datetime
from torch.utils.tensorboard import SummaryWriter
if __name__=='__main__':
# 动态生成时间
log_dir=os.path.join('logs',datetime.datetime.now().strftime("%Y%m%d_%H%M%S"))
if not os.path.exists(log_dir):
os.makedirs(log_dir)
writer=SummaryWriter(log_dir=log_dir)
# y=2x
for i in range(100):
writer.add_scalar(tag='y=2x',scalar_value=1.5*i,global_step=i)
writer.close()
查看实验结果: