深度学习-Tensorboard可视化面板

news2024/11/16 23:48:00

文章目录

  • 简介
  • 安装
  • SummaryWriter
    • 新建
    • 添加数字
    • 运行
    • 添加图片
    • 添加直方图
  • 实战

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

在这里插入图片描述

简介


Tensorboard是Tensorflow官方提供的实用可视化工具,可以将模型训练过程中的各种数据保存到本地,然后在web端可视化展现这些信息,直观便捷的方便我们进行优化调试。

官方文档:https://github.com/tensorflow/tensorboard/blob/master/README.md

相应环境搭建可参考我这篇博客:深度学习-Pytorch环境搭建(Windows)

安装


使用pip安装即可。

pip install tensorboard

SummaryWriter

新建


新建一个SummaryWriter对象,保存待观测数据。

    def __init__(
        self,
        log_dir=None,
        comment="",
        purge_step=None,
        max_queue=10,
        flush_secs=120,
        filename_suffix="",
    ):

重要参数:

  • log_dir
    保存目录,默认为runs/**CURRENT_DATETIME_HOSTNAME**
  • comment
    保存文件名中添加comment

一般不同实验数据,可以用不同的路径以区分,如runs/exp1
新建好Writer对象后,便是往其中添加各种类型的数据,这里介绍主要的几种:数字 (scalar)、图片 (image)、直方图 (histogram)、模型 (graph)。

添加数字


使用add_scalars()添加数字,也是最常用的。

Args:
        main_tag (string): The parent name for the tags
        tag_scalar_dict (dict): Key-value pair storing the tag and corresponding values
        global_step (int): Global step value to record
        walltime (float): Optional override default walltime (time.time())seconds after epoch of event

参数:

  • main_tag
    标记名,文件名前缀
  • tag_scalar_dict
    k-v格式存储的数据
  • global_step
    全局步长值,即标注当前是第几步
  • walltime
    记录发生的时间,默认为 time.time()
    例子:
from torch.utils.tensorboard import SummaryWriter
import numpy as np

writer = SummaryWriter(log_dir='runs/test')
r = 5
for i in range(100):
    writer.add_scalars(main_tag='run_14h',
                       tag_scalar_dict={'xsinx': i * np.sin(i / r), 'xcosx': i * np.cos(i / r), 'tanx': np.tan(i / r)},
                       global_step=i)
writer.close()

在这里插入图片描述

运行


复制日志的绝对路径
在这里插入图片描述
进入conda环境
win+r,activate base,conda activate 你的环境名

运行tensorboard,指定前面复制的路径,可以自定义端口号,默认6006

tensorboard --logdir=日志路径 --port=自定义端口号

在这里插入图片描述
打开http://localhost:6006/或http://127.0.0.1:6006/,即可实现web可视化。

在这里插入图片描述
页面上相关设置可以自己探索~

插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/

添加图片


使用add_image()添加图片。

Args:
    tag (string): Data identifier
    img_tensor (torch.Tensor, numpy.array, or string/blobname): Image data
    global_step (int): Global step value to record
    walltime (float): Optional override default walltime (time.time())seconds after epoch of event
    dataformats (string): Image data format specification of the form CHW, HWC, HW, WH, etc.

参数:

  • tag
    标记名
  • img_tensor
    图片源,可以是torch.Tensor或numpy.array等格式
  • global_step
    全局步长值,即标注当前是第几步
  • dataformats
    图片源格式,也就是图片Height、Width、Channel的顺序,默认(3, H, W)。

例子:

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image
writer = SummaryWriter(log_dir='runs/image')
img_PIL = Image.open('icon.jpg')
img_array = np.array(img_PIL)
print(img_array.shape)
writer.add_image(tag='image', img_tensor=img_array, dataformats='HWC')
writer.close()

在这里插入图片描述

运行同上一节。
在这里插入图片描述

添加直方图


使用add_histogram()添加直方图。

Args:
    tag (string): Data identifier
    values (torch.Tensor, numpy.array, or string/blobname): Values to build histogram
    global_step (int): Global step value to record bins (string): One of {'tensorflow','auto', 'fd', ...}. This determines how the bins are made. You can find other options in: https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html 
    walltime (float): Optional override default walltime (time.time()) seconds after epoch of event

参数解释同上。

例子:

from torch.utils.tensorboard import SummaryWriter
import numpy as np
writer = SummaryWriter(log_dir='runs/histogram')
for i in range(10):
    x = np.random.random(1000)
    writer.add_histogram('distribution centers', x + i, i)
writer.close()

运行同上。
在这里插入图片描述

还有结构图、嵌入向量等,参考文档照葫芦画瓢~

实战


构建一个简单的线性模型,可视化损失、参数的变化。

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

writer = SummaryWriter(log_dir='runs/graph')
data = torch.randn(3, 5)  # 数据
model = nn.Sequential(nn.Linear(5, 3), nn.ReLU(), nn.Linear(3, 1))  # 模型
optimizer = torch.optim.Adam(model.parameters(), lr=1e-2)
epochs = 100
for epoch in range(epochs):
    loss = (model(data).sum()-1)**2
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    writer.add_scalar('Loss', loss.item(), epoch)  # 记录损失的变化
    writer.add_histogram('model[0].weight', model[0].weight, epoch)  # 记录参数的变化
writer.close()


在这里插入图片描述

原创不易,请勿转载本不富裕的访问量雪上加霜
博主首页:https://wzlodq.blog.csdn.net/
来都来了,不评论两句吗👀
如果文章对你有帮助,记得一键三连❤

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

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

相关文章

[附源码]JAVA毕业设计宿舍管理系统(系统+LW)

[附源码]JAVA毕业设计宿舍管理系统(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

「微服务系列」微服务框架的介绍

为什么要学习微服务框架知识? 从求知的角度、企业的角度,微服务都是必知必会的! 需要学习哪些微服务知识? 传统单点架构,无法承载高并发场景;微服务领域按功能模块,将应用拆分成多个服务。大型…

【JavaScript高级】07-ES5、ES6中实现继承,原型及原型链

ES5、ES6实现继承,原型及原型链理解ES5实现继承对象和函数的原型对象的原型函数的原型new、constructor函数原型上的属性优化通过构造函数创建对象原型链原型链实现的继承借用构造函数继承寄生组合实现继承ES5实现继承 对象和函数的原型 对象的原型 JavaScript当…

C#实现发送钉钉工作通知消息

一、实现效果 实现在钉钉的工作中心里面发送消息(比如发送【文本消息】、【markdown消息】等不同类型的内容),实现效果如下: 二、实现思路 2.1、了解钉钉学习路径图 钉钉开放文档 (dingtalk.com)https://open.dingtalk.com/document/org-roadmap 2.2、学习了解钉钉的接入…

cubeIDE开发, stm32的RS485/232串口通信开发要点

一、stm32串口通信 stm32串口通信一般是指通过UART(Universal Asynchronous Receiver/Transmitter)通用异步收发传输器传输数据,UART 作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输,其在…

数据库01_内存分页管理_分段管理_设备管理_IO处理_索引文件结构_文件目录_位示图---软考高级系统架构师008

可以看到数据库方面的考点.在架构里面考4,5分左右 这里只说比较重要的标红的考点. 然后我们来看ER图: 1.首先看一下实体的概念:实体是指的客观存在并相互区别的事物,可以举一个例子,比如一家超市,那么超市经理,员工,部门经理,业务员等等,这都是名词,都是属于实体. 2.然后…

知识图谱-KGE-语义匹配-双线性模型(打分函数用到了双线性函数)-2013:NTN(Neural Tensor Network)

【paper】 Reasoning With Neural Tensor Networks for Knowledge Base Completion 【简介】 本文是斯坦福大学陈丹琦所在团队 2013 年的工作,好像是发表在一个期刊上的。文章提出了用于知识库补全的神经网络框架 NTN(Neural Tensor Network&#xff09…

Golang代码质量检查工具GolangCI-Lint(学习笔记)

Golang代码质量检查工具GolangCI-Lint 直接用下面go get的方式会出现报错 go get github.com/golangci/golangci-lint/cmd/golangci-lint解决方法 直接去 https://github.com/golangci/golangci-lint/releases 下载对应版本 go < 1.9 isn’t supported go1.9 is officia…

机器学习之数据分离与混淆矩阵

文章目录[TOC](文章目录)前言数据分离混淆矩阵實戰總結前言 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文就介绍了机器学习的基础内容之数据分离与混淆矩阵。 数据分离 前面我们…

多线程间的同步控制和通信

用多线程并发处理&#xff0c;目的是为了让程序更充分地利用CPU &#xff0c;好能加快程序的处理速度和用户体验。如果每个线程各自处理的部分互不相干&#xff0c;那真是极好的&#xff0c;我们在程序主线程要做的同步控制最多也就是等待几个工作线程的执行完毕&#xff0c;如…

weston input 概述

weston input 概述 零、前言 本文描述了有关于 weston (基于 wayland 协议一种显示服务器的实现) 中有关于输入设备管理的部分;为了聚焦于此,本文不会对 weston 整体或 wayland 协议进行过多的阐述. 考虑到读者可能存在不同的需求,采用分层次的描述方式,主要面向以下两类人群…

Android Studio 导入opencv异常报错紧急救援

Download OpenCV from SourceForge.net 1、下载Android demo之后导入Android Studio 如下图所示 报错信息如下 A problem occurred configuring root project opencv_samples. > Could not resolve all artifacts for configuration :classpath.> Could not find org.j…

校园失物招领毕业设计,学生失物招领系统设计与实现,毕业设计怎么写论文源码开题报告需求分析怎么做

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于web网页的失物招领网站系统&#xff0c;整个网站项目使用了B/S架构&#xff0c;基于java的springboot框架下开发&#xff1b;管理员通过后台录入信息、管理信息&#xff0c;设置网站信息&#xff0c;管理…

8_4、Java基本语法之线程的通信

一、问题的引入 使用两个线程打印 1-100。线程1, 线程2交替打印&#xff1f; 二、解决问题涉及的方法 涉及到的三个方法&#xff1a; 1.wait():一旦执行此方法&#xff0c;那么调用此方法的线程就会进入阻塞状态&#xff0c;并释放同步监视器。 2.notify():一个线程…

如何使用htmlq提取html文件内容

htmlq能够对 HTML 数据进行 sed 或 grep 操作。我们可以使用 htmlq 搜索、切片和过滤 HTML 数据。让我们看看如何在 Linux 或 Unix 上安装和使用这个方便的工具并处理 HTML 数据。 什么是htmlq&#xff1f; htmlq类似于 jq&#xff0c;但用于 HTML。使用 CSS 选择器从 HTML 文…

[安装] HIVE搭建环境

一、生产环境hive集群架构 参考&#xff1a; hive2.3.7安装记录 hive基础入门与环境的搭建 基础篇七 Hive-2.3.9安装与配置 大数据之Hive 集群搭建 完整使用 数仓&#xff08;十&#xff09;hive的Metastore机制 二、前言快读 Hive安装分类 主要是metastore的服务搭建方…

[rsync] 基于rsync的同步

环境 Linux&#xff1a;CentOs7.5 rsync: 3.1.2 rsync安装 一般安装系统时会自带rsync&#xff0c;可通过如下命令查看已经安装的版本信息 rsync --version如果系统未安装&#xff0c;可通过如下方式安装 yum安装【建议】 使用root用户执行yum安装 yum install -y rsync安…

代码随想录刷题记录day37 0-1背包+分割等和子集

代码随想录刷题记录day37 0-1背包分割等和子集 0-1背包 问题&#xff1a;有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 例题&#xf…

操作系统实验五 进程间通信-管道通信

实验目的 1.掌握利用管道机制实现进程间的通信的方法 2.了解利用消息缓冲队列机制实现进程间的通信的方法 3..了解利用共享存储区机制实现进程间的通信的方法 五个题目如下 1. 函数int pipe(int fd[2])创建一个管道&#xff0c;管道两端可分别用描述字fd[0]以及fd[1]来描述。需…

多元宇宙算法求解电力系统多目标优化问题(Matlab实现)【电气期刊论文复现与创新】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f389;作者研究&#xff1a;&#x1f3c5;&#x1f3c5;&#x1f3c5;本科计算机专业&#xff0c;研究生电气学硕…