您现在的位置是:首页 > 数码 > 

Pytorch使用tensorboard监视网络训练过程

2025-07-22 00:24:30
Pytorch使用tensorboard监视网络训练过程 Pytorch作为一大主流深度学习框架,在1.2版本之后自带tensorboard,这为监视训练过程带来了巨大的便利。但目前的教程多数没有写如何动态监视训练过程。在进行了一些探索后,实现了mnist分类训练动态监视这一功能,特此记录。文中分类demo来自 安装或者升级pytorch

Pytorch使用tensorboard监视网络训练过程

Pytorch作为一大主流深度学习框架,在1.2版本之后自带tensorboard,这为监视训练过程带来了巨大的便利。但目前的教程多数没有写如何动态监视训练过程。在进行了一些探索后,实现了mnist分类训练动态监视这一功能,特此记录。文中分类demo来自

  1. 安装或者升级pytorch环境,安装必要依赖包;
  2. 搭网络训练,但在代码中要插入如下代码,分为三个部分:
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组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/shuma/719507.html

相关标签:无
上传时间: 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