數據可視化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.pswp.cn/bicheng/74643.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74643.shtml
英文地址,請注明出處:http://en.pswp.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;則右?樹上所有結點的值都?于等于根結點…