Win10 pycharm中显示PyTorch tensorboard图
时间:2021-08-20
本文章向大家介绍Win10 pycharm中显示PyTorch tensorboard图,主要包括Win10 pycharm中显示PyTorch tensorboard图使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
import numpy import numpy as np import torch import matplotlib.pyplot as plt import torch.nn as nn import torch.nn.functional as F import torch.optim as optim import torchvision import torchvision.transforms as transforms import tensorboard from torch.utils.tensorboard import SummaryWriter # print(tensorboard.__version__) device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") # Assuming that we are on a CUDA machine, this should print a CUDA device: # print(device) ''' device="cuda" if torch.cuda.is_available() else "cpu" # print(device) ''' torch.set_printoptions(linewidth=120) # Display options for output torch.set_grad_enabled(True) # Already on by default print(torch.__version__, torchvision.__version__, sep='\n') def get_num_correct(preds, labels): return preds.argmax(dim=1).eq(labels).sum().item() class Network(nn.Module): def __init__(self): super().__init__() self.conv1 = nn.Conv2d(in_channels=1, out_channels=6, kernel_size=5) self.conv2 = nn.Conv2d(in_channels=6, out_channels=12, kernel_size=5) self.fc1 = nn.Linear(in_features=12 * 4 * 4, out_features=120) self.fc2 = nn.Linear(in_features=120, out_features=60) self.out = nn.Linear(in_features=60, out_features=10) def forward(self, t): # (1) input layer t = t # (2) hidden conv layer t = self.conv1(t) t = F.relu(t) t = F.max_pool2d(t, kernel_size=2, stride=2) # (3) hidden conv layer t = self.conv2(t) t = F.relu(t) t = F.max_pool2d(t, kernel_size=2, stride=2) # (4) hidden Linear layer t = t.reshape(-1, 12 * 4 * 4) # -1表示对行没约束,反正是12*4*4列 t = self.fc1(t) t = F.relu(t) # (5) hidden Linear layer t = self.fc2(t) t = F.relu(t) # (6) output layer t = self.out(t) # t=F.softmax(t,dim=1) #此处不使用softmax函数,因为在训练中我们使用了交叉熵损失函数,而在torch.nn函数类中,已经在其输入中隐式的 # 执行了一个softmax操作,这里我们只返回最后一个线性变换的结果,也即是 return t,也即意味着我们的网络将使用softmax操作进行训练,但在 # 训练完成后,将不需要额外的计算操纵。 return t # get data train_set = torchvision.datasets.FashionMNIST( root='./data/FashionMNIST', train=True, download=True, transform=transforms.Compose([transforms.ToTensor()]) ) data_loader = torch.utils.data.DataLoader(train_set,batch_size=100,shuffle=True) # shuffle=True # from collections import Iterable # # print(isinstance(data_loader,Iterable)) #返回True ##################### # starting out with TensorBoard(Network Graph and Images) 下面一段为生成日志文件的代码,直到tb.close() ##################### tb=SummaryWriter() network=Network() images,labels=next(iter(data_loader)) grid=torchvision.utils.make_grid(images)#网格效用函数 tb.add_image('images',grid) tb.add_graph(network,images) tb.close() # optimizer = optim.Adam(network.parameters(), lr=0.01) ''' for epoch in range(3): total_loss = 0 total_correct = 0 for batch in data_loader: # get batch images, labels = batch images, labels = images.to(device), labels.to(device) preds = network(images) # pass batch loss = F.cross_entropy(preds, labels) # calculate loss optimizer.zero_grad() loss.backward() # calculate gradients optimizer.step() # update weights using the gradient and the learning rate total_loss += loss.item() total_correct += get_num_correct(preds, labels) print('epoch:', epoch, 'total_correct:', total_correct, 'total_loss:', total_loss) print(total_correct / len(train_set)) '''
其中 runs为该代码所在文件夹中位置,日志文件生成后也在这个文件夹里
如下图:
在runs文件夹上点击鼠标右键 有一个open in terminal 点击
打开后如下图所示:
然后再再上图红框右边输入:tensorboard --logdir=日志文件所在的绝对路径
日志文件绝对路径可以直接在runs文件夹右击 有一个copy path 即可
回车后出现一个网址,点击就可以看到tensorboard图:
原文地址:https://www.cnblogs.com/Li-JT/p/15168086.html
- 学js少看书肯定是不成的,要多看。
- 抽象是啥?就是一群人的特征;js中的call是啥?就是我想用你家的电饭锅
- 从node事件到观察者 -- 学习要有一根线索
- Joy:一款用于捕获和分析网络内部流量数据的工具
- 老尚,能讲讲闭包么?“可以,没问题,马上”
- PHP代码安全杂谈
- angularJs,请问vue是你失散多年的亲人吗?
- 无监督学习神经网络——自编码
- 不学不知道,sort()方法中的坑
- js数组去重的思路与缓动公式
- vue.js 的组件感觉比react的直观&&面试相关的七个实例
- 前端组件“可编辑表格”,怎么设计才好呢?先得有思路
- Linux基础(day61)
- 一款名为Rapid的勒索软件正在迅速传播
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 前端学数据结构与算法(一):不会复杂度分析,算法等于白学
- 高可扩展性系统的设计
- Vue如何实现导出页面为PDF
- 短视频APP开发,如何做到获取播放视频和音频文件
- 3分钟短文:Laravel模型创建数据条目的2个语法糖
- leetcode队列之最近的请求次数
- 路由策略中的IP-Prefix你了解多少?
- Qt音视频开发29-Onvif云台控制
- 十大高性能开发
- 【云+社区年度征文】java agent及字节码技术得到DNS时间流程尝试
- 短视频商城源码,制作彩色验证码
- ubuntu下的mysql安装与使用
- 排序算法
- 并发编程框架Disruptor之高性能设计
- 3分钟短文:Laravel说要用软删除,可不要真删