初学tensorboardX 在pytorch中的使用,做一些笔记,以备忘。

官方文档(github):https://github.com/lanpa/tensorboardX/blob/master/docs/tutorial.rst

各种应用的综合demo:https://github.com/lanpa/tensorboardX

比较详细的知乎介绍:https://zhuanlan.zhihu.com/p/37626738

比较详细的简书文章:https://www.jianshu.com/p/46eb3004beca

安装:

pip install tensorboardX
pip install tensorflow

应用:

每执行一次writer.add_***,都会在显示界面生成一个对应的figure

## 添加标量

writer.add_scalar('tag', y_value, x_value)

# demo.pyimport torch
import torchvision.utils as vutils
import numpy as np
import torchvision.models as models
from torchvision import datasets
from tensorboardX import SummaryWriterresnet18 = models.resnet18(False)
writer = SummaryWriter(log_dir = "demo_log")
sample_rate = 44100
freqs = [262,294,330,349,392,440,440,440,440,440,440]for n_iter in range(100):dummy_s1 = torch.rand(1)dummy_s2 = torch.rand(1)## data grouping by 'slash'## add_scalar在每个n_iter保存一个点,n_iter以横轴的形式出现####-------------绘制并保存散点-折线图------------------------####"""理解:每执行一次 writer.add_** 都是向 可视化界面添加一个figure,该 figure 的 tag 是 add_** 的参数的第一个string类型的参数add_** 的参数:第一个参数:该figure的tag第二个参数:figure的 y 轴数值第三个参数:figure的x轴参数在可视化的时候,只要在logdir的父文件夹里执行 'tensorboard --logdir ***'即可,其中的***是在writer = SummaryWriter(log_dir="xxx_loss")中定义的 log_dir如果在writer = SummaryWriter(log_dir="wzg_loss")命令中不注明 log_dir ,则命令默认log_dir = './runs'##当需要在同一个figure里绘制多条曲线时,需要将y轴坐标的地方设置成字典的形式,每个曲线分量需要    有一个自己的名称
"""## 每执行一次,在对应的 figure 上添加一个对应的点,寻找 figure 是通过 tagwriter.add_scalar('data/scalar1',dummy_s1[0],n_iter)writer.add_scalar('data/scalar2',dummy_s2[0],n_iter)writer.add_scalars('data/scalar_group',{'xsin':n_iter*np.sin(n_iter),'xcos':n_iter*np.cos(n_iter),'arctanx':np.arctan(n_iter)},n_iter)####-------------绘制并保存image ------------------------####dummy_img = torch.rand(32,3,64,64)if n_iter % 10 == 0:x = vutils.make_grid(dummy_img,nrow=8,padding=50,normalize=True,scale_each=True,pad_value=1)## 生成一幅图像'''torchvision.utils.make_grid(tensor, nrow=8, padding=2, normalize=False, range=None, scale_each=False, pad_value=0)作用;Make a grid of images.tensor :4D mini-batch Tensor of shape (B x C x H x W) or a list of images all of the same sizenrow (int, optional) – Number of images displayed in each row of the grid. The Final grid size is (B / nrow, nrow). Default is 8.padding (int, optional) – amount of padding. Default is 2,为每幅图像增加0边界的宽度scale_each (bool, optional) – If True, scale each image in the batch of images separately rather than the (min, max) over all images.pad_value (float, optional) – Value for the padded pixels.'''####-------------绘制并保存image ------------------------####writer.add_image('Image',x,n_iter)## 每个n_iter保存一幅图像,n_iter以一个滑动轴的形式出现####-------------绘制并保存声音------------------------####dummy_audio = torch.zeros(sample_rate * 2)for i in range(x.size(0)):dummy_audio[i] = np.cos(freqs[n_iter // 10] * np.pi * float(i)/float(sample_rate))writer.add_audio('myAudio',dummy_audio,n_iter,sample_rate=sample_rate)####-------------保存文本 ------------------------###### 以block列表的形式出现,每执行一次 add_text ,就会在对应的 tag 的writer.add_text('Text','text logged at step:'+str(n_iter),n_iter)####-------------显示 net 的名称及保存的对应参数------------------------####for name,param in resnet18.named_parameters():writer.add_histogram(name,param.clone().cpu().data.numpy(),n_iter)####-------------显示曲线------------------------###### 绘制 PR 曲线  : add_pr_curve (tag, labels, predictions, step)## labels :是标准答案(one hot 形式)## predictions:预测结果值,每个元素的取值范围为 [0,1],表示概率## n_iter: 会在每次迭代生成一个PR曲线图,n_iter 会在界面左侧以滑动轴的形式出现## 函数 add_pr_curve 会内在自动设计阈值从 1 变换到 0,得到不同的TP,FP,TN,FN的值,用以计算PR曲线## 目前没有直接的 生成ROC曲线的 函数labels = np.random.randint(2,size=100)prediction = np.random.rand(100)writer.add_pr_curve('xoxo',labels,prediction,n_iter)'''pr curve根據預測的機率值以及其對應的標準答案計算 precision-recall 的結果並保存。add_pr_curve (tag, labels, predictions, step)labels是標準答案,predictions是程式對樣本的預測。假設有十筆資料 labels就會長得像[0, 0, 1, 0, 0, 1, 0, 1, 0, 1] ,predictions則長的像[0.1, 0.3, 0.8, 0.2, 0.4, 0.5, 0.1, 0.7, 0.9, 0.2] '''# writer.add_roc_curve()dataset = datasets.MNIST('mnist',train=False,download=True)
images = dataset.test_data[:100].float()
label = dataset.test_labels[:100]features = images.view(100,784)
####-------------降维显示------------------------####
writer.add_embedding(features,metadata=label,label_img = images.unsqueeze(1))## export scalar data to json for external processing
writer.export_scalars_to_json('./all_scalars.json')
writer.close()

保存网络结构

import torch
import torch.nn as nn
import torch.nn.functional as F
from tensorboardX import SummaryWriterclass Net1(nn.Module):def __init__(self):super(Net1,self).__init__()self.conv1 = nn.Conv2d(1,10,kernel_size=5)self.conv2 = nn.Conv2d(10,20,kernel_size=5)self.conv2_drop = nn.Dropout2d()self.fc1 = nn.Linear(320,50)self.fc2 = nn.Linear(50,10)self.bn = nn.BatchNorm2d(20)def forward(self,x):x = F.max_pool2d(self.conv1(x),2)x = F.relu(x) + F.relu(-x)x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)),2))x = self.bn(x)x = x.view(-1,320)x = F.relu(self.fc1(x))x = F.dropout(x,training=self.training)x = self.fc2(x)x = F.softmax(x,dim=1)return x
model = Net1()dummy_input = torch.rand(13,1,28,28)
with SummaryWriter(comment='Net1',log_dir="my_net") as w:w.add_graph(model,(dummy_input,))'''記錄網路架構。 (實驗性的功能,模型複雜的時候不確定對不對)問題很多的功能。使用上比較複雜。需要準備兩個東西:網路模型 以及 你要餵給他的 Tensor舉例來說,令模型為 m,輸入為 x,則使用方法為:add_graph(m, (x, )) 這裡使用 tuple 的原因是當網路有多個輸入時,可以把他擴充成add_graph(m, (x, y, z)) ,如果只有單一輸入,寫成add_graph(m, x)也無妨。常會出錯的原因:較新的 operator pytorch本身不支援JIT輸入是 cpu tensor,model 在 GPU 上。(或是反過來)輸入的 tensor 大小錯誤,跑到後面幾層維度消失了(或是爆掉)model 寫錯,前後兩層 feature dimension 對不上除錯方法forward propagate 一次 m(x) 或是多個輸入時:m((x, y, z)) 2. 用 torch.onnx.export 導出模型,觀察錯誤訊息
'''

tensorboardX 介绍相关推荐

  1. Pytorch使用tensorboardX可视化。超详细

    tensorboard --logdir runs 改为 tensorboard --logdir=D:\model\tensorboard\runs 重点 在网上看了很多方法后发现将原本链接中的计算 ...

  2. 收藏 | PyTorch模型训练特征图可视化(TensorboardX)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨Pa ...

  3. conda 装tensorboardx_【工欲善其事】TensorboardX的使用

    "我不喜欢Tensorflow,但这并不妨碍我使用tensorboard" 上一篇文章(https://zhuanlan.zhihu.com/p/39849027),和大家简单地聊 ...

  4. pytorch 笔记:tensorboardX

    1 SummaryWriter 1.1 创建 首先,需要创建一个 SummaryWriter 的示例: from tensorboardX import SummaryWriter#以下是三种不同的初 ...

  5. pytorch 画loss曲线_Pytorch使用tensorboardX可视化。超详细!!!

    1 引言 我们都知道tensorflow框架可以使用tensorboard这一高级的可视化的工具,为了使用tensorboard这一套完美的可视化工具,未免可以将其应用到Pytorch中,用于Pyto ...

  6. 学习 PySOT(1)(介绍、配置、使用)

    文章目录 前言 一. PySOT介绍 二. PySOT配置 1. 文件准备(附:所有百度云链接) 2. 环境配置 三. PySOT使用 1. 尝试先在Anaconda Prompt 命令窗口下运行de ...

  7. conda 装tensorboardx_Pytorch数据可视化:TensorboardX安装及使用(安装测试+实例演示)...

    数据可视化:TensorboardX安装及使用 tensorboard作为Tensorflow中强大的可视化工具: https://github.com/tensorflow/tensorboard, ...

  8. Pytorch:visdom介绍

    一.介绍 在深度学习领域,模型训练是一个必须的过程,因此常常需要实时监听并可视化一些数据,如损失值loss,正确率acc等.在Tensorflow中,最常使用的工具非Tensorboard莫属:在Py ...

  9. 简单介绍互联网领域选择与营销方法

    在我看来,互联网领域的选择是"安家",而营销方法的不同则表现了"定家"的方式多种多样,只有选对了,"家"才得以"安定". ...

最新文章

  1. AI芯片市场,到底是怎么一回事?
  2. 《C和指针》一1.7 问题
  3. POJ3693 Maximum repetition substring
  4. biosrecovery什么意思_BIOS中的每个中文是什么意思
  5. Java SecurityManager checkPermission()方法与示例
  6. 中国AI军团争霸机器阅读理解大赛,搜狗创下全球新纪录
  7. CDH报错: 主机的 NTP 服务未同步至任何远程服务器
  8. pycharm Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon run
  9. 查看sql语句的执行计划
  10. Autojs微信自动操作免root脚本源码
  11. 气血瘀滞热入血室闭经案
  12. 四、SQL函数②(字符串函数)
  13. 我的爬虫入门作(一)
  14. 操作系统实践-BIOS
  15. MPN (Learning Normal Dynamics in Videos with Meta Prototype Network)代码阅读
  16. php开启curl,给PHP安装和开启curl扩展
  17. qt Android 按键事件,QT无窗口状态下对键盘事件的监听
  18. 煤炭价格预测:基于matlab的时间序列分析(主要流程+完整代码)
  19. PMP考试 | 点击率最高 的100个主要知识点
  20. 神州泰岳和北大方正参观总结

热门文章

  1. 框架封装_重大突破,欧菲光成功研发半导体封装用高端引线框架
  2. Makefile的基本规则实例说明
  3. select case语句_图解Go select语句原理
  4. linux进程阻塞的原因,释放大块内存时的阻塞问题
  5. java table 内容居中_JTable内容居中显示 | 学步园
  6. python 多关键字排序_用Python排序字​​典
  7. selenium 示例_Selenium findElement和findElements示例
  8. 将Python字符串转换为Int,将Int转换为String
  9. kotlin枚举_Kotlin枚举班
  10. 使用Python Seaborn和Pandas进行数据可视化