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

目录

    • 简介
    • 使用方式
      • 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 npwriter = 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 npwriter = 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 npwriter = 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 torchfrom torchvision import transformsimg_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 pltwriter = 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 nnwriter = 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.mzph.cn/news/100484.shtml

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

相关文章

SpringCloud之Stream框架集成RocketMQ消息中间件

Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架。它可以基于 Spring Boot 来创建独立的、可用于生产的 Spring 应用程序。Spring Cloud Stream 为一些供应商的消息中间件产品提供了个性化的自动化配置实现&#xff0c;并引入了发布-订阅、消费组、分区这三…

SQL Server 简介与 Docker Compose 部署

今天我翻阅了在之前公司工作时的笔记&#xff0c;发现了有关数据库的一些记录。当时&#xff0c;我们的项目开始使用 Oracle 数据库&#xff0c;但后来由于一些项目需求的变更&#xff0c;我们切换到了 SQL Server 。值得一提的是&#xff0c;公司当时也开始采用 Docker 技术&a…

c++模板库容器list vector map set操作和性能对比

文章目录 listvectormapset性能比较总结 list 列表&#xff08;list&#xff09;是C STL中的一种容器类型&#xff0c;它是一个双向链表&#xff0c;可以在任意位置高效地添加、删除、移动元素。 以下是一些常用的列表操作&#xff1a; 创建列表 #include <list> std…

Jetson Orin NX 开发指南(1): 系统烧录

一、SDK Manager SDK Manager 工具是 NVIDIA 官方推荐的烧写和管理 Jetpack 系统组件的一个图形化烧写工具&#xff0c;使用起来非常的简单方便&#xff0c;但是该软件需要在 x86 的 Ubuntu 18.04 或 Ubuntu 20.04 的系统上运行&#xff0c;因此我们需要准备一台安装了 Ubuntu…

记录:Unity脚本的编写3.0

目录 前言前置控制方法查看效果移动方式 前言 前面记录了一些通过脚本控制对象模型移动和通过用户的操作对模型进行变化的方法&#xff0c;那么为了让我们创造的不论是地形还是模型都拥有真实的物理引擎&#xff08;大雾&#xff09;&#xff0c;那么这次就使用脚本控制模型感…

函数reshape(-1,)里的-1的意思

reshape函数是对narray的数据结构进行维度变换&#xff0c;由于变换遵循对象元素个数不变&#xff0c;在进行变换时&#xff0c;假设一个数据对象narray的总元素个数为N&#xff0c;如果我们给出一个维度为&#xff08;m&#xff0c;-1&#xff09;时&#xff0c;我们就理解为将…

【Linux C】Linux如何执行一个程序(程序存储空间、系统调用、内核调用)

文章目录 一、程序存储空间1.1 C语言程序存储空间1.2 用户空间和内核空间1.3 用户模式和内核模式 二、内核调用-系统调用-C语言库函数2.1 系统调用和内核调用2.2 C语言库函数 三、Linux如何执行一个程序 一、程序存储空间 本节说的空间主要是指内存空间&#xff0c;即程序如何分…

链表(2)——带头双向循环链表

&#x1f341;一、链表的分类 &#x1f315;1.单向或者双向 &#x1f315;2.带头或者不带头&#xff08;有无哨兵&#xff09; &#x1f315;3.循环或者不循环 &#x1f315;4.无头单向非循环链表&#xff08;常用&#xff09; &#x1f315;5.带头双向循环链表&#xff08;常用…

案例分享:原生广告如何助力app实现高效变现收益的转化

原生广告是指将广告嵌入到APP的内容中&#xff0c;使其与APP内容融为一体&#xff0c;达到获得用户关注的效果。在形式上&#xff0c;原生广告并不像传统广告那样显眼&#xff0c;而是以一种更加自然的方式展现在用户面前。 它采用了与APP相似的设计风格和交互方式&#xff0c…

深度学习DAY1:神经网络NN;二元分类

深度学习笔记 DAY1 深度学习基本知识 1.神经网络 1.1 单一神经元 所有神经元将房屋大小size作为输入x,计算线性方程&#xff0c;结果取max&#xff08;0&#xff0c;y&#xff09;,输出预测房价y ReLU函数&#xff08;线性整流函数&#xff09;–max&#xff08;0&#xf…

Axios、SASS学习笔记

目录 前言 一、Axios基础认识 1、简介 2、相关文档 3、基本配置 4、基础快捷使用 二、Axios封装 1、公共配置文件 2、细化每个接口的配置 3、使用并发送请求 三、SASS 1、简介 2、相关文档 3、使用前奏 4、使用变量 5、嵌套规则 6、父级选择器标识 & 前言…

Linux基本指令(下)——“Linux”

各位CSDN的uu们好呀&#xff0c;今天&#xff0c;小雅兰的内容仍然是Linux中的基本指令啦&#xff0c;下面&#xff0c;让我们进入Linux的世界吧&#xff01;&#xff01;&#xff01; Cal指令 find指令&#xff1a;&#xff08;灰常重要&#xff09; -name grep指令 zip/un…

【置顶】关于博客的一些公告

所谓 万事开头难&#xff0c;最开始的两个专栏 《微机》 和 《骨骼动作识别》 定价 29.9 &#xff0c;因为&#xff1a; 刚开始确实比较困难&#xff0c;要把自己学的知识彻底搞懂讲给别人&#xff0c;还要 码字排版&#xff0c;从 Markdown 语法开始学起&#xff08;这都是 花…

Hadoop2.0探讨

文章目录 8. Hadoop 再探讨8.1 Hadoop的优化与发展8.2 HDFS 的FA和Federation(Hadoop2.0新特性)8.2.1 HDFS HA8.2.2 HDFS Federation 8.3 YARN8.3.1 MapReduce1.0的缺陷8.3.2 Yarn设计思路8.3.3 Yarn体系结构8.3.4 Yarn工作流程8.3.5 Yarn框架和MapReduce1.0框架对比分析8.3.6 …

【Java 进阶篇】CSS 选择器详解

CSS&#xff08;层叠样式表&#xff09;是一种用于描述网页上元素样式的语言。要想有效地使用CSS&#xff0c;了解CSS选择器是至关重要的&#xff0c;因为它们允许你选择要应用样式的HTML元素。在本文中&#xff0c;我们将详细介绍CSS选择器的各种类型和用法&#xff0c;以便你…

Vue中使用Echarts封装为公用组件(简单复制粘贴)

Vue中封装Echarts组件 前提直奔主题 本文以Vue3代码演示 Vue2同理 前提 中文官网&#xff1a; https://echarts.apache.org/zh/index.html npm安装Echarts npm install echarts or pnpm install echarts or yarn add echarts直奔主题 创建Echarts.vue文件&#xff0c;代码如…

Solidity 合约漏洞,价值 38BNB 漏洞分析

Solidity 合约漏洞&#xff0c;价值 38BNB 漏洞分析 1. 漏洞简介 https://twitter.com/NumenAlert/status/1626447469361102850 https://twitter.com/bbbb/status/1626392605264351235 2. 相关地址或交易 攻击交易&#xff1a; https://bscscan.com/tx/0x146586f05a451313…

Unity官方文档中关于内存管理的翻译(2021.3)

原文:Memory in Unity - Unity 手册 Unity内存管理 为了确保您的应用程序运行时没有性能问题&#xff0c;了解Unity如何使用和分配内存非常重要。本文档的这一部分解释了Unity中内存是如何工作的&#xff0c;适用于希望了解如何提高应用程序内存性能的读者。 Unity使用三个内…

视频答题猜歌闯关娱乐微信小程序源码支持看视频答题闯关听歌猜歌答题流量主模式(团队奖励等)

功能强大UI美观的视频答题猜歌闯关娱乐微信小程序源码下载 后台管理资源本地化带数据和视频教程&#xff0c;这是一款拥有后端的闯关娱乐小程序。 支持个人小程序和企业小程序上线运营 功能强大齐全,带数据本地化 (数据在自己服务器自己管理无需担心第三方失效的问题) 支持看视…

【重拾C语言】七、指针(二)指针与数组(用指针标识数组、多维数组与指针、数组指针与指针数组)

目录 前言 七、指针 7.1~3 指针与变量、指针操作、指向指针的指针 7.4 指针与数组 7.4.1 用指针标识数组 7.4.2 应注意的问题 a. 数组名是指针常量 b. 指针变量的当前值 c. 数组超界 7.4.3 多维数组与指针 7.4.4 指针数组 a. 指针数组 b. 数组指针 c. 对比总结 前…