首页 > 编程知识 正文

torch九项目,torch.floattensor

时间:2023-05-05 13:48:07 阅读:175127 作者:34

相比于visdom,tensorborad对结果可视化集成的更好,界面相对更为美观,内容更为丰富,实现过程也更为简单。 1. Tensorboard面板介绍:

2. 使用tensorboard记录结果

 直接上代码,这部分内容参考了torch.utils.tensorborad文档内容(torch.utils.tensorboard — PyTorch 1.10.0 documentation)

import numpy as npimport torchfrom torch import nn# 导入tensorboard写入器from torch.utils.tensorboard import SummaryWriter# 使用SummaryWriter实例化tensorboard# 如果SummaryWriter里面给出路径, tensorboard就会创建对应的路径, 用于储存记录的结果# 如果SummaryWriter里面给出路径, tensorboard就会创建默认文件夹runs用于储存结果# 使用该实例化的对象writer即可实现将所记录的对象添加到tensorboard记录的结果中writer = SummaryWriter('./path/to/the/folder2')for n_iter in range(100): # writer.add_scalar函数用于添加标量值 # add_scalar(tags, scalar_value, global_stop) # tags: string, 记录对象的标签 # scalar_valud: float, 记录的数值 # global_step: int, x轴的数值 writer.add_scalar('Loss/train', np.random.random(), n_iter) writer.add_scalar('Loss/test', np.random.random(), n_iter) writer.add_scalar('Accuracy/train', np.random.random(), n_iter) writer.add_scalar('Accuracy/test', np.random.random(), n_iter)############################################## writer.add_scalars(main_tag, tag_scalar_dict, global_step=None) # 该函数用于将多个scalar添加到同一个图中 # main_tag: string, 父标签 # tag_scalar_dict: dict, 将多个scalar组合在一起的字典对象, # 该字典的key表示tag, value为记录的scalar值 # global_step: int, 图片的x轴############################################## 该函数可以同时比较train, valid的Loss和评价指标的变化, 更有助于判断模型的训练情况for i in range(100): writer.add_scalars( 'run_14h', { 'xsinx':i*np.sin(i/5), 'xcosx':i*np.cos(i/5), 'tanx': np.tan(i/5) }, i )############################################## writer.add_histogram(tag, values, global_step=None) # 该函数用于记录直方图 # tag: string, 标签 # values: (torch.Tensor, numpy.array), 用于绘制直方图的值 # global_step: int, x轴取值############################################## 该函数可以用于记录训练过程中, 模型weight和bias取值的分布情况for i in range(10): x = np.random.random(1000) writer.add_histogram('distribution centers', x + i, i)############################################## writer.add_image(tag, image_tensor, global_step=None) # 该函数用于记录图片image, 需要注意的是, 当使用该函数的时候, 需要用到pillow包 # tag: string, 标签 # img_tensor: (torch.Tensor, numpy.array), shape=(3, H, W), 图片的像素值 # global_step: int, x轴取值############################################## 该函数可用于实现模型训练过程中的图片特征的可视化img = np.zeros((3, 100, 100))img[0] = np.arange(0, 10000).reshape(100, 100) / 10000img[1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000img_HWC = np.zeros((100, 100, 3))img_HWC[:, :, 0] = np.arange(0, 10000).reshape(100, 100) / 10000img_HWC[:, :, 1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000writer.add_image('my_image', img, 0)writer.add_image('my_image_HWC', img_HWC, 0, dataformats='HWC')############################################## writer.add_text(tag, text_string, global_step=None) # 该函数用于记录文本字符串 # tag: string, 标签 # text_string: string, 需要记录的文本 # global_step: int, x轴取值############################################## 该函数应该主要用于文本分析的任务writer.add_text('LSTM', 'This is an lstm', 0)############################################## writer.add_graph(# model, input_to_model=None, verbose=False, use_strict_trace=True# )# 该函数用于记录graph数据 # model: torch.nn.Module, 需要绘制的model # input_to_model: (torch.Tensor, list of torch.Tensor), model的输入 # verbose: bool, 是否在控制面板上打印graph的结构 # use_strict_trace: bool, ############################################## 该函数应该主要用于文本分析的任务class MyModel(nn.Module): """ 简单的MLP """ def __init__(self): super(MyModel, self).__init__() self.layers = nn.Sequential( nn.Linear(5, 3), nn.ReLU(True), nn.Linear(3, 2), nn.ReLU(True) ) def forward(self, x): return self.layers(x)mymodel = MyModel()X = torch.randn(10, 5)writer.add_graph(mymodel, X)# 关闭writerwriter.close() 3. 命令行启动tensorboard用于可视化结果

在命令行输入如下命令:

tensorboard --logdir logpath --port 6069# --logdir 后面跟的是tensorboard记录对象的储存路径, 该路径下可以有多个tensorboard储存结果# --port 后面跟的是端口

然后就可以在http://localhost:6069/中查看tensorboard记录的结果。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。