pytorch学习------TensorBoard的使用

news2024/9/24 15:18:20

目录

    • 简介
    • 使用方式
      • 1、单条曲线(scalar)
      • 2、多条曲线(scalars)
      • 3、直方图(histogram)
      • 4、图片(image)
      • 5、渲染(figure)
      • 6、网络(graph)

简介

建好一个神经网络,其实我们也不知道神经网络里头具体细节到底做了什么,要人工调试十分困难(就好比你无法想象出递归的所有步骤一样)。有了TensorBoard,可以将TensorFlow程序的执行步骤都显示出来,非常直观。并且,我们可以对训练的参数(比如loss值)进行统计,用图的方式来查看变化的趋势。
TensorBoard可以用于记录训练数据、评估数据、网络结构、图像等,并且可以在web上展示,对于观察神经网络的过程非常有帮助。PyTorch也推出了自己的可视化工具,一个是tensorboardX包,一个是torch.utils.tensorboard,二者的使用相差不大,这里介绍后者

使用方式

要启动 TensorBoard,打开终端或命令提示符并运行:

tensorboard --logdir=<directory_name>

将 directory_name 标记替换为保存数据的目录。 默认是“logs”。

1、单条曲线(scalar)

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

参数:

  • tag ( string ) – 数据标识符
  • scalar_value ( float或string/blobname ) – 要保存的值
  • global_step ( int ) – 要记录的全局步长值
  • walltime ( float ) – 记录训练的时间,默认 walltime (time.time()) 秒
  • new_style ( boolean ) – 是使用新样式(张量字段)还是旧样式(simple_value
    字段)。新样式可能会导致更快的数据加载。

例子:

from torch.utils.tensorboard import SummaryWriter
import numpy as np

writer = SummaryWriter("scalar")
for x in range(1, 101) :
    writer.add_scalar('y = 2x',2 * x, x ) ### 这里反了,正常情况应该是writer.add_scalar('y = 2x', 2 * x, x)
writer.close()


#tensorboard --logdir=scalar

效果:
在这里插入图片描述

2、多条曲线(scalars)

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

参数:

  • main_tag ( string ) – 标签的父名称
  • tag_scalar_dict ( dict ) – 存储标签和对应值的键值对
  • global_step ( int ) – 要记录的全局步长值
  • walltime ( float ) – 记录训练的时间,默认 walltime (time.time()) 秒

例子:

from torch.utils.tensorboard import SummaryWriter
import numpy as np

writer = SummaryWriter("scalars")
r = 5
for x in range(1, 101) :
    writer.add_scalars('run_14h', {'xsinx' : x * np.sin(x / r),
                                  'xcosx' : x * np.cos(x / r),
                                  'xtanx' : x * np.tan(x / r)}, x)
writer.close()
#tensorboard --logdir=scalars

效果:
在这里插入图片描述

3、直方图(histogram)

add_histogram( tag , values , global_step = None , bins = ‘tensorflow’ , walltime = None , max_bins = None )

参数:

  • tag ( string ) – 数据标识符

  • 值(torch.Tensor、numpy.array或string/blobname)– 构建直方图的值

  • global_step ( int ) – 要记录的全局步长值

  • bins ( string ) – {‘tensorflow’,‘auto’, ‘fd’, …} 之一。这决定了柱的制作方式。

  • walltime ( float ) – 记录训练的时间,默认 walltime (time.time()) 秒

例子:

from torch.utils.tensorboard import SummaryWriter
import numpy as np

writer = SummaryWriter("histogram")
for step in range(10) :
    x = np.random.randn(1000)
    writer.add_histogram('distribution of gaussion', x, step)
writer.close()
#tensorboard --logdir=histogram

效果:
在这里插入图片描述

4、图片(image)

add_image(tag, img_tensor, global_step=None, walltime=None, dataformats = ‘CHW’)

参数:

  • tag ( string ) – 数据标识符

  • img_tensor ( torch.Tensor , numpy.array , or string/blobname ) – 图像数据

  • global_step ( int ) – 要记录的全局步长值

  • walltime ( float ) – 记录训练的时间,默认 walltime (time.time()) 秒

例子:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
import torch

from torchvision import transforms

img_path = "1Q12FR626-9-1200.jpg"
img = Image.open(img_path)
writer = SummaryWriter("logs")
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
writer.add_image("Tensor_img",tensor_img,0)
writer.close()


效果:

在这里插入图片描述

5、渲染(figure)

add_figure( tag , figure , global_step = None , close = True , walltime = None )

参数:

  • tag ( string ) – 数据标识符

  • image( matplotlib.pyplot.figure ) – 图或图列表

  • global_step ( int ) – 要记录的全局步长值

  • close ( bool ) – 自动关闭图形的标志

  • walltime ( float ) – 记录训练的时间,默认 walltime (time.time()) 秒

例子:

from torch.utils.tensorboard import SummaryWriter
import numpy as np
import matplotlib.pyplot as plt

writer = SummaryWriter("figure")

x = np.linspace(0, 10, 1000)
y = np.sin(x)

figure1 = plt.figure()
plt.plot(x, y, 'r-')
writer.add_figure('my_figure', figure1, 0)
writer.close()
# tensorboard --logdir=figure --port=8888

效果:
在这里插入图片描述

6、网络(graph)

add_graph(model, input_to_model=None, verbose=False, use_strict_trace = True)

参数:

  • model( torch.nn.Module ) – 要绘制的模型。

  • input_to_model ( torch.Tensor or list of torch.Tensor ) – 要输入的变量或变量元组

  • verbose(bool)– 是否在控制台中打印图形结构。

  • use_strict_trace ( bool ) – 是否将关键字参数严格传递给 torch.jit.trace。当您希望跟踪器记录您的可 - 变容器类型(列表、字典)时传递 False.

例子:

from torch.utils.tensorboard import SummaryWriter
import numpy as np
import torch
import torch.nn as nn

writer = SummaryWriter("graph")
class MLP(nn.Module) :
    def __init__(self):
        super(MLP, self).__init__()
        self.Net = nn.Sequential(
            nn.Linear(784, 512),
            nn.ReLU(),

            nn.Linear(512, 128),
            nn.ReLU(),

            nn.Linear(128, 10)
        )
    def forward(self, input):
        input = input.view(-1, 28 * 28)
        return self.Net(input)
model = MLP()
input = torch.FloatTensor(np.random.rand(32, 1, 28, 28))
writer.add_graph(model, input)

#tensorboard --logdir=graph --port=8888

效果:
在这里插入图片描述
在这里插入图片描述

常用的就以上几种

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1074792.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Markdown文本编辑器常用操作介绍

文章目录 标题文本样式列表图片链接目录插入代码插入表格 背景说明 Markdown语言是国际杂志编辑以及许多写作者都广泛使用的写作语言它使用一些简单的符号&#xff08;* / > [] () #&#xff09;来标记文本格式其简洁的语法、优美的格式以及强大的软件支持深受广大网友的喜…

基于蝠鲼觅食优化的BP神经网络(分类应用) - 附代码

基于蝠鲼觅食优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于蝠鲼觅食优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.蝠鲼觅食优化BP神经网络3.1 BP神经网络参数设置3.2 蝠鲼觅食算法应用 4.测试结果…

Java @Override 注解

在代码中&#xff0c;你可能会看到大量的 Override 注解。 这个注解简单来说就是让编译器去读的&#xff0c;能够避免你在写代码的时候犯一些低级的拼写错误。 Java Override 注解用来指定方法重写&#xff08;Override&#xff09;&#xff0c;只能修饰方法并且只能用于方法…

自定义背景画词云图(中文)

背景 词云图还是挺需要用的吧&#xff0c;大量的词中&#xff0c;我们可以快速捕捉到高频的关键的词汇。 环境&#xff1a;python3 对csv文件里面某列所有字符串画词云图&#xff08;中文的字符&#xff09; 新安装环境&#xff1a; 1.下载中文字体SimHei.ttf&#xff0c;并放…

C++DAY41

#include <iostream>using namespace std;class Per { private:string name;int age;float* height;float* weight; public:Per(){cout << "Per::无参构造函数" << endl;}Per(string name,int age,float* height,float* weight):name(name),age(ag…

RustDay01——运行在线GitHub Rust环境

1.跟着教程进入GitHub教室 2. 授权确认后进入学习空间 3.点击链接进入在线平台 4.添加本机密钥对到GitHub 5. 安装依赖 我们使用在线的Linux试验平台&#xff0c;就自动帮我们clone好了仓库 我们直接在仓库目录执行 cargo install --force --path . 安装依赖 PS:其实刚开始…

Godot 添加信号

前言 Godot 里面C#和GDScirpt 的用法完全不一样&#xff0c;网上相关资料太少了。 什么是信号 信号分为信号源&#xff0c;触发&#xff0c;目的节点。信号源在某些条件下触发信号&#xff0c;比如按钮点击&#xff0c;鼠标悬停等事件 #mermaid-svg-wyr9ARVcBFmUUu8y {font-…

哈希传递原理

哈希传递只针对相同密码进行攻击。 NTLM认证流程 NTLM加密&#xff1a; admin -> hex(16进制编码) 61646d696e61646d696e-> Unicode 610064006d0069006e00610064006d0069006e00–>MD4209c6174da490caeb422f3fa5a7ae634 认证过程&#xff1a; 注意:challenge每次认证…

【C++】list基本接口+手撕 list(详解迭代器)

父母就像迭代器&#xff0c;封装了他们的脆弱...... 手撕list目录&#xff1a; 一、list的常用接口及其使用 1.1list 构造函数与增删查改 1.2list 特殊接口 1.3list 排序性能分析 二、list 迭代器实现&#xff08;重点难点&#xff09; 关于迭代器的引入知识&#xff1a…

项目管理入门指南:如何快速上手?

面对复杂的项目任务&#xff0c;如何入手项目管理呢&#xff1f;在项目管理过程中需要面对许多繁杂的问题以及复杂的流程&#xff0c;还涉及到与团队成员的沟通协作。如果单单依靠人的注意力与记忆&#xff0c;可能没有办法兼顾多个方面。一个靠谱好用的项目管理工具可以帮助您…

HTTPS建立连接的过程

HTTPS 协议是基于 TCP 协议的&#xff0c;因而要先建立 TCP 的连接。在这个例子中&#xff0c;TCP 的连接是在手机上的 App 和负载均衡器 SLB 之间的。 尽管中间要经过很多的路由器和交换机&#xff0c;但是 TCP 的连接是端到端的。TCP 这一层和更上层的 HTTPS 无法看到中间的包…

如何正确方便的理解双指针?力扣102 (二叉树的层序遍历)

双指针&#xff0c;顾名思义就是指针的指针。 在此之前我们需要先理解单指针 &#xff08;简称为指针&#xff09;。指针很简单&#xff0c;直接上例子&#xff1a;例&#xff1a;现有两个变量&#xff0c;a10,b20. 要求&#xff1a;交换他们的值&#xff0c;输出的结果应为a20…

操作系统 —— 进程篇

文章目录 进程的概念程序的概念进程控制块 PCB进程的组成进程状态进程状态转换 进程队列进程的组织进程控制内核的两大功能进程创建进程终止进程阻塞与唤醒进程切换 进程通信 进程的概念 进程是操作系统中的基本概念&#xff0c;用于描述正在运行的程序实例。 它是计算机系统…

GG-Net: 超声图像中乳腺病变分割的全局指导网络

ATTransUNet 期刊分析摘要贡献方法整体框架1. Global Guidance Block2. Spatial-wise Global Guidance Block3. Channel-wise Global Guidance Block4. Breast Lesion Boundary Detection Module 实验1. 对比实验2. 消融实验2.1 Ablation Analysis of our GG-Net2.2 Ablation A…

maven_修改项目名_修改模块名_复制模块_导入模块

修改模块名 1、删除.idea和.iml 2、修改gav(记得修改子模块) 复制模块名&修改模块名 1、复制文件并修改artifactId

(二)Web服务器之Linux多进程

一、基础概念 Linux操作系统一般由以下四个主要部分组成&#xff1a;内核、shell、文件系统和应用程序 。 内核&#xff08;Kernel&#xff09;&#xff1a;是操作系统的核心部分&#xff0c;负责管理系统的硬件资源、进程管理、内存管理、文件系统等。它直接与硬件交互&…

Java中的 try-finally 代码块的题目

class Test4 {int i 1;public static void main(String[] args) {System.out.println("i的值&#xff1a;" new Test4().test());}int test() {try {// 当 try 代码块执行 return 语句时&#xff0c;返回值已经被确定并保存下来&#xff0c;等待方法结束后返回。尽…

网络原理必知会

前言&#xff1a; 网络初始&#xff1a;对于网络有一个直观的大体的认识 网络编程&#xff1a;让我们真正通过代码感受网络通信程序 网络原理&#xff1a;进一步的理解网络是如何工作的&#xff0c;以理论为主&#xff0c;很多比较抽象的东西&#xff0c;同时这里也包含大量的面…

ssti 前置学习

python venv环境 可以把它想象成一个容器&#xff0c;该容器供你用来存放你的Python脚本以及安装各种Python第三方模块&#xff0c;容器里的环境和本机是完全分开的 创建venv环境安装flask #apt install python3.10-venv #cd /opt #python3 -m venv flask1 #cd /opt 选…

1.1了解python_python量化实用版教程(初级)

Python 特点 Python 安装和使用的编译器选择不展开。 Python 是一种高级编程语言&#xff0c;具有以下特点&#xff1a; - 简单易学&#xff1a;Python 语法简单&#xff0c;易于学习和理解。 - 开放源代码&#xff1a;Python 是开源的&#xff0c;可以免费使用&#…