数据可视化TensorboardX和tensorBoard安装及使用

tensorBoard 和TensorboardX 安装及使用指南

tensorBoard 和 TensorBoardX 是用于可视化机器学习实验和模型训练过程的工具。TensorBoard 是 TensorFlow 官方提供的可视化工具,而 TensorBoardX 是其社区驱动的替代品,支持 PyTorch 等其他框架。以下是它们的安装和使用方法。


一、TensorboardX 安装

1. 环境准备
  • Python 版本:TensorboardX 支持 Python 3.6 及以上版本。
  • pip:确保已安装 pip,Python 3.4 及以上版本自带 pip。
2. 安装 TensorboardX

方法一:使用 pip 安装

pip install tensorboardX

方法二:使用国内镜像源(适用于网络较慢的情况)

pip install tensorboardX -i https://pypi.tuna.tsinghua.edu.cn/simple

方法三:从源码安装

  1. 克隆源码仓库

    git clone https://github.com/huangzehao/tensorboardX.git
    cd tensorboardX
    
  2. 安装依赖项

    pip install -r requirements.txt
    
  3. 安装 TensorboardX

    python setup.py install
    
3. 验证安装

安装完成后,可以通过以下命令验证是否安装成功:

python -c "import tensorboardX; print(tensorboardX.__version__)"

如果没有报错并输出版本号,说明安装成功。


二、TensorBoard 安装及使用

1. 安装 TensorBoard

TensorBoard 通常与 TensorFlow 一起安装,但也可以单独安装。

  • 使用 pip 安装

    pip install tensorboard
    
  • 使用 conda 安装(如果你使用 Anaconda 或 Miniconda):

    conda install -c conda-forge tensorboard
    
2. 使用 TensorBoard
  • 在 TensorFlow 中使用

    在 TensorFlow 中,你可以通过 tf.summary API 记录日志,然后使用 TensorBoard 可视化。

    示例代码

    import tensorflow as tf
    import datetime# 创建一个日志目录
    logdir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")# 创建一个简单的模型
    model = tf.keras.models.Sequential([tf.keras.layers.Dense(10, activation='relu', input_shape=(784,)),tf.keras.layers.Dense(10, activation='softmax')
    ])model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])# 创建一个 TensorBoard 回调
    tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=logdir)# 加载数据(以 MNIST 为例)
    mnist = tf.keras.datasets.mnist
    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    x_train, x_test = x_train / 255.0, x_test / 255.0# 训练模型
    model.fit(x_train, y_train, epochs=5, callbacks=[tensorboard_callback])
    
  • 启动 TensorBoard

    在终端中运行以下命令,启动 TensorBoard 并指定日志目录:

    tensorboard --logdir="D:\Program Files\python\PycharmProjects\AiStudy\demo_17\logdir"
    

    在这里插入图片描述

    然后在浏览器中打开 http://localhost:6006,即可查看可视化结果。


三、TensorBoard 和 TensorBoardX 的比较

特性TensorBoardTensorBoardX
官方支持是,TensorFlow 官方工具否,社区驱动
框架支持主要支持 TensorFlow支持 PyTorch、MXNet 等
功能丰富的可视化功能,包括标量、图像、文本等类似 TensorBoard,但更侧重于 PyTorch
安装难度较低,通常与 TensorFlow 一起安装较低,单独安装
使用场景TensorFlow 项目的首选PyTorch 项目的首选

四、TensorboardX 使用方法

1. 基本使用流程

步骤 1:导入 TensorboardX

from tensorboardX import SummaryWriter

步骤 2:创建 SummaryWriter 实例

writer = SummaryWriter(log_dir='./logs')  # 指定日志目录

步骤 3:记录数据

你可以记录标量、图片、直方图、模型图等多种类型的数据。

示例:记录标量数据

for step in range(100):writer.add_scalar('metric/loss', 0.1 * step, step)  # 添加标量数据writer.add_scalar('metric/accuracy', 0.9 - 0.01 * step, step)

步骤 4:关闭 SummaryWriter

writer.close()

步骤 5:启动 TensorBoard

在终端中运行以下命令,启动 TensorBoard 可视化界面:

tensorboard --logdir=./logs

然后打开浏览器,访问 http://localhost:6006,即可查看可视化结果。


2. 常用功能示例

(1)记录标量数据

writer.add_scalar('tag_name', scalar_value, global_step)
  • tag_name:标签名称,用于在 TensorBoard 中分类显示。
  • scalar_value:标量值。
  • global_step:全局步数,通常表示训练的迭代次数。

(2)记录图片

import numpy as np# 创建示例图片
image = np.random.rand(3, 100, 100)  # 3 通道,100x100 像素
writer.add_image('example_image', image, global_step=0)

(3)记录直方图

values = np.random.normal(loc=0, scale=1, size=1000)  # 生成正态分布数据
writer.add_histogram('distribution', values, global_step=0)

(4)记录模型图

如果你使用 PyTorch,可以记录模型结构:

import torch
import torch.nn as nnclass SimpleModel(nn.Module):def __init__(self):super(SimpleModel, self).__init__()self.fc = nn.Linear(10, 1)def forward(self, x):return self.fc(x)model = SimpleModel()
dummy_input = torch.rand(1, 10)
writer.add_graph(model, dummy_input)

(5)记录文本

writer.add_text('example_text', 'Hello, TensorboardX!', global_step=0)

(6)记录嵌入向量

# 示例嵌入向量
features = np.random.rand(100, 10)  # 100 个样本,每个样本 10 维
labels = np.random.randint(0, 10, size=100)  # 100 个标签
writer.add_embedding(features, metadata=labels, tag='embedding_example')

五、注意事项

  1. 日志目录

    • 确保 log_dir 指定的目录存在或可创建。
    • 不同的实验应使用不同的日志目录,避免数据覆盖。
  2. 资源占用

    • TensorboardX 会占用一定的磁盘空间,定期清理不再需要的日志。
    • 在训练过程中频繁记录数据可能会增加 I/O 开销,影响训练速度。
  3. 版本兼容性

    • 确保 TensorboardX 与 TensorBoard 的版本兼容。
    • 如果使用 PyTorch,建议使用最新版本的 PyTorch 和 TensorboardX。
  4. 安全性

    • 如果在服务器上运行 TensorBoard,确保只允许授权用户访问。
    • 可以使用 --bind_all 参数或配置防火墙,限制访问范围。

六、常见问题解答

Q1:TensorboardX 与 TensorBoard 有什么区别?

  • TensorboardX:是 TensorBoard 的一个社区支持版本,提供了与 TensorBoard 兼容的 API,适用于 PyTorch 等框架。
  • TensorBoard:是 TensorFlow 自带的可视化工具,原生支持 TensorFlow,但也可以通过 TensorboardX 在其他框架中使用。

Q2:如何在远程服务器上使用 TensorBoard?

  • SSH 隧道:可以通过 SSH 隧道将远程服务器的 TensorBoard 端口映射到本地。

    ssh -L 6006:localhost:6006 user@remote_server
    

    然后在本地浏览器访问 http://localhost:6006

  • 使用 ngrok:可以将本地 TensorBoard 服务暴露到公网。

Q3:TensorBoard 无法显示数据怎么办?

  • 检查日志目录:确保 tensorboard --logdir 指定的目录包含有效的日志文件。
  • 检查数据记录:确保在训练过程中正确调用了 add_scalaradd_image 等方法。
  • 查看终端输出:TensorBoard 启动时,终端会输出日志信息,检查是否有错误提示。


七、总结

  • TensorBoard 是 TensorFlow 的官方可视化工具,功能丰富,适合 TensorFlow 项目。
  • TensorBoardX 是 TensorBoard 的社区实现,支持 PyTorch 等其他框架,使用方式与 TensorBoard 类似。
  • 安装和使用 都相对简单,只需确保正确记录日志并启动 TensorBoard 服务。

通过 TensorBoard 或 TensorBoardX,你可以直观地监控模型训练过程,分析实验结果,从而更有效地优化模型。

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

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

相关文章

蓝桥杯C++基础算法-多重背包

这段代码实现了一个多重背包问题的动态规划解法。多重背包问题与完全背包问题类似,但每个物品有其数量限制。以下是代码的详细思路解析: 1. 问题背景 给定 n 个物品,每个物品有其体积 v[i]、价值 w[i] 和数量 s[i],以及一个容量为…

【SUNO】【AI作词】【提示词】

仿写歌词提示词模板(升级版) 一、仿写目标 风格定位 音乐风格: [填写目标风格,如:民谣/流行/古风/电子/爵士等]参考案例:如《成都》的叙事民谣,《孤勇者》的励志流行。 情感基调: […

26考研——树与二叉树_树与二叉树的应用(5)

408答疑 文章目录 三、树与二叉树的应用哈夫曼树和哈夫曼编码哈夫曼树的定义概念带权路径长度(WPL)计算示例分析 哈夫曼树的构造算法描述哈夫曼树的性质示例 哈夫曼编码Huffman树的编码规则Huffman树的构建过程前缀编码前缀编码的分析及应用 Huffman树的…

【VUE】day06 动态组件 插槽 自定义指令 ESlint

【VUE】day06 动态组件 & 插槽 & 自定义指令 1. 动态组件1.1 通过不同的按钮展示不同的组件1.1.1回顾click 1.2 keep-alive的使用1.3 keep-alive对应的生命周期函数1.3.1 keep-alive的include属性1.3.2 exclude 1.4 组件注册名称和组件声明时name的区别1.4.1 组件声明时…

nodejs-原型污染链

还是老规矩,边写边学,先分享两篇文章 深入理解 JavaScript Prototype 污染攻击 | 离别歌 《JavaScript百炼成仙》 全书知识点整理-CSDN博客 Ctfshow web入门 nodejs篇 web334-web344_web334 ctfshow-CSDN博客 334-js审计 var express require(expr…

Oracle 数据库通过exp/imp工具迁移指定数据表

项目需求:从prod数据库迁移和复制2个表(BANK_STATE,HBS)的数据到uat数据库环境。 数据库版本:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 迁移工具:客户端exp/imp工具 -- 执行命令 从Prod数据库导出数据exp us…

企业级基于SpringBoot的MQTT的构建和使用

基于SpringBoot的MQTT配置及使用 首先要使用EMQX搭建一个MQTT服务器&#xff0c;参考文档&#xff1a;EMQX快速开始 本着开源分享的观点&#xff0c;闲话不多说&#xff0c;直接上代码 导入Maven <dependency><groupId>org.springframework.integration</gro…

26考研——图_图的代码实操(6)

408答疑 文章目录 五、图的代码实操图的存储邻接矩阵结构定义初始化插入顶点获取顶点位置在顶点 v1 和 v2 之间插入边获取第一个邻接顶点获取下一个邻接顶点显示图 邻接表结构定义初始化图插入顶点获取顶点位置在顶点 v1 和 v2 之间插入边获取第一个邻接顶点获取下一个邻接顶点…

开源webmail邮箱客户端rainloop的分支版本SnappyMail 设置发件人允许多重身份

RainLoop已多年未更新&#xff0c;SnappyMail 是 RainLoop 的分支&#xff0c;由社区维护。SnappyMail 不仅修复了漏洞&#xff0c;还增加了更多功能和优化。对 IMAP 支持更好&#xff0c;移动端体验也比 RainLoop 更细致。 安装过程和设置跟RainLoop一样&#xff1a; 以宝塔面…

海量数据场景题--查找两个大文件的URL

查找两个大文件共同的URL 给定 a、b 两个文件&#xff0c;各存放 50 亿个 URL&#xff0c;每个 URL 各占 64B&#xff0c;找出 a、b 两个文件共同的 URL。内存限制是 4G。 操作逻辑&#xff1a; 使用哈希函数 hash(URL) % 1000​ 将每个URL映射到0-999的编号 文件A切割为a0, a1…

简单ELK框架搭建

简介 ELK 框架是一套开源的日志管理和分析工具&#xff0c;由 Elasticsearch、Logstash 和 Kibana 三个主要组件组成&#xff0c;现在新增了Filebeat组件&#xff0c;可以更高效的收集数据。 Elasticsearch&#xff1a;是一个分布式、高可扩展的开源搜索引擎&#xff0c;能快速…

VS Code 中 .history`文件的来源与 .gitignore`的正确使用

引言 在使用 VS Code 进行 Git 版本控制时&#xff0c;有时会发现项目中多出一个 .history 目录&#xff0c;并被 Git 识别为未跟踪文件。本文将解释 .history 的来源&#xff0c;并提供 .gitignore 的正确配置方法&#xff0c;确保开发环境的整洁性。 1. .history 文件的来源…

网络之数据链路层

数据链路层 数据链路层目标 TCP/IP提供了一种能力, 将数据可靠的从 B 跨网络送到 C 主机, 这期间是由无数次局域网转发构成的, 比如 主机B 到 路由器F 就是一次局域网通信的问题, 而数据链路层就是研究数据是如何在局域网内部转发的. 也就是说, 应用层是进行数据的处理, 传输…

A Brief History: from GPT-1 to GPT-3

This is my reading notes of 《Developing Apps with GPT-4 and ChatGPT》. In this section, we will introduce the evolution of the OpenAI GPT medels from GPT-1 to GPT-4. GPT-1 In mid-2018, OpenAI published a paper titled “Improving Language Understanding …

基于大数据的各品牌手机销量数据可视化分析系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;各品牌手机销量数据可视化分析系统当然不能排除在外。基于大数据的各品牌手机销量数据可视化分析系统是在实际应用和软件工程的开发原理之…

人工智能-群晖Docker部署DB-GPT

人工智能-群晖Docker部署DB-GPT 0 环境及说明1 获取dbgpt的docker镜像2 下载向量模型3 下载配置文件4 修改配置文件5 创建dbgpt容器并运行6 访问dbgpt0 环境及说明 环境项说明DSM版本DSM 7.2.1-69057 update 3Container Manager版本24.0.2-1535当前 hub.docker.com 镜像仓库中的…

Netty——TCP 粘包/拆包问题

文章目录 1. 什么是 粘包/拆包 问题&#xff1f;2. 原因2.1 Nagle 算法2.2 滑动窗口2.3 MSS 限制2.4 粘包的原因2.5 拆包的原因 3. 解决方案3.1 固定长度消息3.2 分隔符标识3.3 长度前缀协议3.3.1 案例一3.3.2 案例二3.3.3 案例三 4. 总结 1. 什么是 粘包/拆包 问题&#xff1f…

JavaScript Fetch API

简介 fetch() API 是用于发送 HTTP 请求的现代异步方法&#xff0c;它基于 Promise&#xff0c;比传统的 XMLHttpRequest 更加简洁、强大 示例 基本语法 fetch(url, options).then(response > response.json()).then(data > console.log(data)).catch(error > con…

UMI-OCR Docker 部署

额外补充 Docker 0.前置条件 部署前&#xff0c;请检查主机的CPU是否具有AVX指令集 lscpu | grep avx 输出如下即可继续部署 Flags: ... avx ... avx2 ... 1.下载dockerfile wget https://raw.githubusercontent.com/hiroi-sora/Umi-OCR_runtime_linux/main/Do…

C++ --- 二叉搜索树

1 二叉搜索树的概念 ⼆叉搜索树⼜称⼆叉排序树&#xff0c;它或者是⼀棵空树&#xff0c;或者是具有以下性质的⼆叉树: 1 若它的左⼦树不为空&#xff0c;则左⼦树上所有结点的值都⼩于等于根结点的值 2 若它的右⼦树不为空&#xff0c;则右⼦树上所有结点的值都⼤于等于根结点…