conda 装tensorboardx_在pytorch下使用tensorboardX(win10;谷歌浏览器;jupyter notebook)

使用环境:win10 ,在jupyter notebook下运行 谷歌浏览器

1、环境安装

使用conda 安装,打开anacond powershell,输入pip install tensorboard ,然后安装pip install tensorflow

2、使用操作

在终端或者环境命令行下,打开程序所在目录,使用shift+右键进入cmd,输入jupyter notebook,进入环境,打开程序。

(1)在程序开头加入

from torch.utils.tensorboard import SummaryWriter,而不是from tensorboardX import SummaryWriter,参考https://pytorch.org/tutorials/intermediate/tensorboard_tutorial.html

(2)writer = SummaryWriter('runs/exp1'),runs/exp1表示相关信息存储位置,可自行定义。然后调用相关函数即可。例如想知道训练次数epoch与损失函数之间的关系,调用writer.add_scalar('Train Loss', train_loss / len(train_data), global_step=epoch) 。然后运行一次函数,等待程序运行完毕。

(3)打开runs文件夹的上一级目录,然后使用shift+右键进入cmd,输入tensorboard --logdir=runs ,随后弹出如下

复制网址,然后打开(据说只能使用谷歌浏览器,未经验证)。有可能出现如下提示,打开exp1文件夹,如果文件大小为0,则表示数据未成功写入,重新运行程序即可。或者重新操作第三步

如果进入如下类似页面,则表示成功

指令集补充

(1)add_scalar(tag, scalar_value, global_step=None, walltime=None)

功能:

在一个图表中记录一个标量的变化,常用于 Loss 和 Accuracy 曲线的记录。

参数:tag(string)- 该图的标签,类似于 polt.title。

scalar_value(float or string/blobname)- 用于存储的值,曲线图的 y 坐标

global_step(int)- 曲线图的 x 坐标

walltime(float)- 为 event 文件的文件名设置时间,默认为 time.time()

(2)add_scalars(main_tag, tag_scalar_dict, global_step=None, walltime=None)

功能:

在一个图表中记录多个标量的变化,常用于对比,如 trainLoss 和 validLoss 的比较

等。

参数:

main_tag(string)- 该图的标签。

tag_scalar_dict(dict)- key 是变量的 tag, value 是变量的值。

global_step(int)- 曲线图的 x 坐标

walltime(float)- 为 event 文件的文件名设置时间,默认为 time.time()

writer.add_scalars('result', {'Train Loss':train_loss / len(train_data),'Train Acc':train_acc / len(train_data),'Valid Loss':valid_loss / len(valid_data),'Valid Acc':valid_acc / len(valid_data)}, global_step=epoch)

类似上面代码,其中result表示标题,train Loss等表示每条线名字,epoch表示x轴

(3)add_histogram(tag,values,global_step=None,bins='tensorflow',walltime=None)

功能:

绘制直方图和多分位数折线图,常用于监测权值及梯度的分布变化情况,便于诊断网

络更新方向是否正确。

参数:

tag(string)- 该图的标签,类似于 polt.title。

values(torch.Tensor, numpy.array or string/blobname)- 用于绘制直方图的值

global_step(int)- 曲线图的 y 坐标

bins(string)- 决定如何取 bins,默认为‘tensorflow’ ,可选: ’auto’, ‘fd’ 等

walltime(float)- 为 event 文件的文件名设置时间,默认为 time.time()

(4)add_image(tag,img_tensor,global_step=None,walltime=None)

功能:

绘制图片,可用于检查模型的输入,监测 feature map 的变化,或是观察 weight。

参数:

tag(string)- 该图的标签,类似于 polt.title。

img_tensor(torch.Tensor,numpy.array, or string/blobname)- 需要可视化的图片数

据, shape = [C,H,W]。

global_step(int)- x 坐标。

walltime(float)- 为 event 文件的文件名设置时间,默认为 time.time()。

通常会借助 torchvision.utils.make_grid() 将一组图片绘制到一个窗口

(5)torchvision.utils.make_grid(tensor,nrow=8,padding=2,normalize=False,ra

nge=None,scale_each=False,pad_value=0)

功能:

将一组图片拼接成一张图片,便于可视化。

参数:

tensor(Tensor or list)- 需可视化的数据, shape:(B x C x H x W) ,B 表示 batch 数,即

几张图片

nrow(int)- 一行显示几张图,默认值为 8。

padding(int)- 每张图片之间的间隔,默认值为 2。

normalize(bool)- 是否进行归一化至(0,1)。

range(tuple)- 设置归一化的 min 和 max,若不设置,默认从 tensor 中找 min 和 max。

scale_each(bool)- 每张图片是否单独进行归一化,还是 min 和 max 的一个选择。

pad_value(float)- 填充部分的像素值,默认为 0,即黑色。

(6)add_graph(model,input_to_model=None,verbose=False,**kwargs)

功能:

绘制网络结构拓扑图。

参数:

model(torch.nn.Module)- 模型实例

inpjt_to_model(torch.autograd.Variable)- 模型的输入数据,可以生成一个随机数,只

要 shape 符合要求即可

运行以下代码:

import torchfromtorch import nn

import numpyasnpfromtorch.autograd import Variablefromtorchvision.datasets import CIFAR10fromdatetime import datetime

import osfromtorch.utils.tensorboard import SummaryWriter

import torchvision.modelsasmodels

import tensorflowastf

#定义网络架构classAlexNet(nn.Module):

def __init__(self):

super().__init__()

# 第一层是 5x5 的卷积, 输入的 channels 是3,输出的 channels 是 64, 步长是 1, 没有 padding

self.conv1=nn.Sequential(

nn.Conv2d(3, 64, 5),

nn.ReLU(True))

# 第二层是 3x3 的池化, 步长是2, 没有 padding

self.max_pool1= nn.MaxPool2d(3,2)

# 第三层是 5x5 的卷积, 输入的 channels 是64,输出的 channels 是 64, 步长是 1, 没有 padding

self.conv2=nn.Sequential(

nn.Conv2d(64, 64, 5, 1),

nn.ReLU(True))

# 第四层是 3x3 的池化,步长是2,没有 padding

self.max_pool2= nn.MaxPool2d(3, 2)

# 第五层是全连接层,输入是1204,输出是 384self.fc1=nn.Sequential(

nn.Linear(1024, 384),

nn.ReLU(True))

# 第六层是全连接层,输入是384,输出是 192self.fc2=nn.Sequential(

nn.Linear(384, 192),

nn.ReLU(True))

# 第七层是全连接层,输入是192,输出是 10self.fc3= nn.Linear(192, 10)

def forward(self, x):

x=self.conv1(x)

x=self.max_pool1(x)

x=self.conv2(x)

x=self.max_pool2(x)

# 将矩阵拉平

x= x.view(x.shape[0], -1)

x=self.fc1(x)

x=self.fc2(x)

x=self.fc3(x)returnx

alexnet=AlexNet()

writer= SummaryWriter('runs/exp1')

dummy_input= Variable(torch.zeros(1, 3, 32, 32))

with writer:

writer.add_graph(alexnet,dummy_input)

可在 GRAPHS 中看到 Resnet18 的网络拓扑

双击AlexNet

(7)add_embedding(mat,metadata=None,label_img=None,global_step=None,tag='de

fault',metadata_header=None)

功能:

在三维空间或二维空间展示数据分布,可选 T-SNE、 PCA 和 CUSTOM 方法。

参数

mat(torch.Tensor or numpy.array)- 需要绘制的数据,一个样本必须是一个向量形式。

shape = (N,D), N 是样本数, D 是特征维数。

metadata(list)- 数据的标签,是一个 list,长度为 N。

label_img(torch.Tensor)- 空间中展示的图片, shape = (N,C,H,W)。

global_step(int)- Global step value to record,不理解这里有何用处呢?知道的朋友补

充一下吧。

tag(string)- 标签

(8)add_text(tag,text_string,global_step=None,walltime=None)

功能: 记录文字(9)add_video(tag,vid_tensor,global_step=None,fps=4,walltime=None)

功能: 记录 video(10)add_figure(tag,figure,global_step=None,close=True,walltime=None)

功能: 添加 matplotlib 图片到图像中

(11)add_image_with_boxes(tag,img_tensor,box_tensor,global_step=None,walltime

=None,**kwargs)

功能: 图像中绘制 Box,目标检测中会用到

(12)add_pr_curve(tag,labels,predictions,global_step=None,num_thresholds=127,w

eights=None,walltime=None)

功能: 绘制 PR 曲线

(13)add_pr_curve_raw(tag,true_positive_counts,false_positive_counts,true_negati

ve_counts,false_negative_counts,precision,recall,global_step=None,num_thres

holds=127,weights=None,walltime=None)

功能: 从原始数据上绘制 PR 曲线

(14)export_scalars_to_json(path)

功能: 将 scalars 信息保存到 json 文件,便于后期使用

注意:没有验证或者验证有问题参考官方链接

你可能感兴趣的:(conda,装tensorboardx)