[torch]日志记录之SummaryWriter(持更)

参考博文:

  1. 《tensorboardX的简单使用》
  2. 《详解PyTorch项目使用TensorboardX进行训练可视化》
  3. 《使用TensorBoard检查监控深度学习模型》

一、使用方法

class SummaryWriter(builtins.object)
 |  SummaryWriter(log_dir=None, comment='', purge_step=None, max_queue=10, flush_secs=120, filename_suffix='')
  • log_dir:日志所保存的位置
  • comment:

1.1 提醒

  1. log_dir,如果文件不存在的,则自动创建相关文件路径。
    在这里插入图片描述
    为了保证存储的信息不混乱,一般在事前清除日志所在的文件路径。
# log dir
if os.path.exists('logs'):
    shutil.rmtree('logs')# 如果文件存在,则递归的删除文件内容
    print('Remove log dir')

1.2 安装

  • 直接安装:pip install tensorboardX
    在这里插入图片描述

  • 采用的源码安装
    git clone https://github.com/lanpa/tensorboardX && cd tensorboardX && python setup.py install
    似乎不能下面这样搞?!!!
    在这里插入图片描述

二、使用日志记录loss等标量信息

导入库

import torch 
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader,Dataset
from torch.utils.tensorboard import SummaryWriter

共用的模型实例化

device = torch.device('cpu')
net = nn.Linear(1,1).to(device) # 最简单全链接模型
loss_fn =nn.MSELoss().to(device)# 损失函数
optimizer = optim.SGD(net.parameters(),lr=0.001)

2.1 简化版train,使用SummaryWriter

if os.path.exists('log1'):
    shutil.rmtree('log1')# 如果文件存在,则递归的删除文件内容
    print('Remove log dir')
# 1. 输入数据
x_train = np.linspace(-1, 1, 100).reshape(100, 1)
y_train = 3 * np.power(x_train, 2) + 2 + 0.2 * np.random.randn(100, 1)
# 2. 实例化sw
sw1 = SummaryWriter(log_dir='log1')
# 3. 模型训练
for epoch in trange(40):
    inputs = torch.from_numpy(x_train).type(torch.float32).to(device)  # 所有输入
    targets = torch.from_numpy(y_train).type(torch.float32).to(device)  # 标签

    output = net(inputs)  # 模型的输入输出
    loss = loss_fn(output, targets)  # 预测则和真实值的loss

    loss.backward()  # 模型向后传递
    optimizer.step()  # 优化器优化

    sw1.add_scalar("train_loss", loss, epoch)

2.2 批量训练,使用SummaryWriter

定义Dataset数据

class Mydataset(Dataset):
    def __init__(self,):
        x_train =np.linspace(-1,1,100).reshape(100,1)
        y_train= 3*np.power(x_train,2)+2+0.2*np.random.randn(100,1)
        self.x= torch.from_numpy(x_train)
        self.y=torch.from_numpy(y_train)
    def __len__(self,):
        return (100,1)
    def __getitem__(self,index):
        return self.x[index],self.y[index]

使用DataLoader设置batch_size,批量训练

dataset = Mydataset()
train_loader = DataLoader(dataset,batch_size=5,shuffle=True)
# 训练模型比记录lossz值
for epoch range(30):
    running_loss =0.0 
    for x_t,y_t in enumerate(train_loader):
        optimizer.zero_grad()
        output=net(x_t)
        loss=loss_fn(output,y_t)
        loss.backward()
        optimizer.step()
        running_loss+=loss.item()
    sw.add_scalar("train_loss",epoch,running_loss)
        

三、打开TensorBoard

在这里插入图片描述

  1. 使用cmd打开终端Terminal
  2. 激活tensorboardX所在的虚拟环境
  3. tensorboard下激活logdir
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值