Pytorch使用tensorboard监视网络训练过程
Pytorch使用tensorboard监视网络训练过程
Pytorch作为一大主流深度学习框架,在1.2版本之后自带tensorboard,这为监视训练过程带来了巨大的便利。但目前的教程多数没有写如何动态监视训练过程。在进行了一些探索后,实现了mnist分类训练动态监视这一功能,特此记录。文中分类demo来自
安装或者升级pytorch
Pytorch使用tensorboard监视网络训练过程
Pytorch作为一大主流深度学习框架,在1.2版本之后自带tensorboard,这为监视训练过程带来了巨大的便利。但目前的教程多数没有写如何动态监视训练过程。在进行了一些探索后,实现了mnist分类训练动态监视这一功能,特此记录。文中分类demo来自
- 安装或者升级pytorch环境,安装必要依赖包;
- 搭网络训练,但在代码中要插入如下代码,分为三个部分:
from torch. import SummaryWriter
writer = SummaryWriter() #定义writer,使用默认路径
# log_dir = dir_to_your_destination
# writer = SummaryWriter(log_dir) #定义writerwriter.add_scalar( test/loss , test_loss, epoch1) # add the information to the log file
writer.add_scalar( test/correct , correct, epoch1)()
程序一旦运行到writer.add_scalar
后就会生成类似名字为Jan10_1-12-2_DESKTOP-G0RGKWD
的文件夹,内有添加的数据
. 从终端进入当前使用的
虚拟环境和目录
4. 使用tensorboard --logdir=dir_to_your_destination --port=2200
来启动tensorboard,该命令直行后会有一个连接http://localhost:2200/
,将其复制粘贴到(pycharm的终端中可直接点击进入)浏览器中,即可打开
5. 选择要查看的数据进行查看,注意tensorboard是0秒更新一次数据,效果如下图
注意:
- 指定端口和完整日志路径比较容易出现效果,前期尝试中易出现无法打开或者打开后数据不对的情况,稍微多尝试几次
- 本例子只是以标量数据为例,可以添加多种类型的数据,可直接搜索查看tensorboard的官方说明
- 本例子的详细代码见
完整代码:
#!/usr/bin/env python
# encoding: utf-8
@author: AlvinLXS
@time: 2020.1.10 12:50
@file: train_process.py
@desc: most part of the source codes comes from
from __future__ import absolute_import
from __future__ import print_function
from __future__ import divisionimport argparse #Python 命令行解析工具
import torch
import as nn
import .functional as F
import as optim
from torchvision import datasets, transformsfrom torch. import SummaryWriter
writer = SummaryWriter() #定义writer,使用默认路径# log_dir = dir_to_your_destination
# writer = SummaryWriter(log_dir) #定义writerclass et(nn.Module):def __init__(self):super(et, self).__init__() = nn.Conv2d(1, 10, kernel_size=5) = nn.Conv2d(10, 20, kernel_size=5)_drop = nn.Dropout2d()self.fc1 = nn.Linear(20, 50)self.fc2 = nn.Linear(50, 10)def forward(self, x):x = F.relu(_pool2d((x), 2))x = F.relu(_pool2d(_drop((x)), 2))x = x.view(-1, 20)x = F.relu(self.fc1(x))x = F.dropout(x, training=)x = self.fc2(x)return F.log_softmax(x, dim=1)def train(args, model, device, train_loader, optimizer, epoch):()for batch_idx, (data, target) in enumerate(train_loader):data, target = (device), (device)optimizer.zero_grad()output = model(data)loss = _loss(output, target)loss.backward()optimizer.step()if batch_idx % args.log_interval == 0:print( Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f} .format(epoch, batch_idx * len(data), len(train_loader.dataset),100. * batch_idx / len(train_loader), loss.item()))def test(args, model, device, test_loader,epoch):()test_loss = 0correct = 0with _grad():for data, target in test_loader:data, target = (device), (device)output = model(data)test_loss = _loss(output, target, size_average=False).item() # sum up batch losspred = (1, keepdim=True)[1] # get the index of the max log-probabilitycorrect = (target.view_as(pred)).sum().item()test_loss /= len(test_loader.dataset)print( \nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n .format(test_loss, correct, len(test_loader.dataset),100. * correct / len(test_loader.dataset)))writer.add_scalar( test/loss , test_loss, epoch1) # add the information to the log filewriter.add_scalar( test/correct , correct, epoch1)def main():# Training settingsparser = argparse.ArgumentParser(description= PyTorch MIST Example )parser.add_argument( --batch-size , type=int, default=64, metavar= ,help= input batch size for training (default: 64) )parser.add_argument( --test-batch-size , type=int, default=1000, metavar= ,help= input batch size for testing (default: 1000) )parser.add_argument( --epochs , type=int, default=0, metavar= ,help= number of epochs to train (default: 10) )parser.add_argument( --lr , type=float, default=0.000001, metavar= LR ,help= learning rate (default: 0.01) ) # use a small learning rate to slow the trainparser.add_argument( --momentum , type=float, default=0.5, metavar= M ,help= SGD momentum (default: 0.5) )parser.add_argument( --no-cuda , action= store_true , default=False,help= disables CUDA training )parser.add_argument( --seed , type=int, default=1, metavar= S ,help= random seed (default: 1) )parser.add_argument( --log-interval , type=int, default=10, metavar= ,help= how many batches to wait before logging training status )args = parser.parse_args()use_cuda = not _cuda and is_available()_seed(args.seed)device = torch.device(cuda if use_cuda else cpu)kwargs = { num_workers : 1, pin_memory : True} if use_cuda else {}train_loader = torch.utils.data.DataLoader(datasets.MIST( ../data , train=True, download=True,transform=transforms.Compose([transforms.ToTensor(),((0.107,), (0.081,))])),batch_size=args.batch_size, shuffle=True, **kwargs)test_loader = torch.utils.data.DataLoader(datasets.MIST( ../data , train=False, transform=transforms.Compose([transforms.ToTensor(),((0.107,), (0.081,))])),batch_size=_batch_size, shuffle=True, **kwargs)model = et().to(device)optimizer = optim.SGD(model.parameters(), lr=args.lr, momentum=)for epoch in range(1, 1):train(args, model, device, train_loader, optimizer, epoch)test(args, model, device, test_loader,epoch)if __name__ == __main__ :main()()
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2023-12-01 08:16:59
推荐阅读
留言与评论(共有 10 条评论) |
本站网友 视频特效 | 10分钟前 发表 |
loss.item()))def test(args | |
本站网友 理财咨询 | 4分钟前 发表 |
64) )parser.add_argument( --test-batch-size | |
本站网友 普萘洛尔 | 5分钟前 发表 |
但目前的教程多数没有写如何动态监视训练过程 | |
本站网友 好用的bb霜 | 2分钟前 发表 |
.4f} | |
本站网友 汉寿二手房 | 8分钟前 发表 |
transform=transforms.Compose([transforms.ToTensor() | |
本站网友 什么是偷税漏税 | 8分钟前 发表 |
lr=args.lr | |
本站网友 没有你我的手 | 24分钟前 发表 |
20 | |
本站网友 cps是什么意思 | 13分钟前 发表 |
model | |
本站网友 鼻翼 | 6分钟前 发表 |
AlvinLXS @time |