小土堆pytorch--tensorboard的使用

小土堆pytorch--tensorboard的使用

  • 小土堆pytorch--tensorboard的使用
    • 0.介紹
    • 1.使用tensorboard繪制 y = x 等簡單函數
      • 1.1 相應的代碼
      • 1.2 對上述代碼的解釋
      • 1.3 可能遇到的問題
        • 1.3.1 問題
        • 1.3.2 解決方法
    • 2.使用tensorboard加載數據集中的圖片
      • 2.1 相應代碼
      • 2.2 對上述代碼的解釋
        • 2.2.1 代碼功能概述
        • 2.2.2代碼逐行解釋
      • 2.3 后續操作

小土堆pytorch–tensorboard的使用

0.介紹

TensorBoard 是 TensorFlow 提供的一組可視化工具 ,能將機器學習實驗數據圖形化展示,助力理解、調試、優化模型,也可用于 PyTorch 等框架結合使用來可視化相關數據。

主要功能

  • 可視化模型結構:呈現模型計算圖,展示張量、變量和操作流程,助于理解模型架構和參數。
  • 跟蹤訓練指標:實時呈現損失函數、準確率、梯度等訓練指標變化,以折線圖等形式展示,方便評估模型性能和優化訓練過程。
  • 可視化數據分布:通過直方圖展示張量分布,了解權重、激活值等分布及變化;用平面展示數據分布情況,分析數據特征。
  • 展示圖像音頻:展示訓練過程中的圖像(如輸入圖像、輸出圖像、中間層特征圖 )和音頻數據,輔助理解模型對多媒體數據的處理。
  • 高維數據降維可視化:利用技術將高維嵌入向量投影到低維空間展示,分析向量關系和分布。

1.使用tensorboard繪制 y = x 等簡單函數

1.1 相應的代碼

from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter("logs")# writer.add_image()
# y = x
for i in range(0, 100):writer.add_scalar("y=x", i, i)writer.close()

運行這段代碼后,會在當前目錄下生成一個名為 logs 的文件夾,其中包含了記錄 y = x 數據的日志文件。接下來,可以在命令行中使用以下命令啟動 TensorBoard 服務:

tensorboard --logdir=logs

然后在瀏覽器中打開 http://localhost:6006,就可以看到 y = x 函數關系的可視化圖表。
在這里插入圖片描述
然后就可以看到圖表
在這里插入圖片描述

1.2 對上述代碼的解釋

  1. 導入模塊

    from torch.utils.tensorboard import SummaryWriter
    

    這行代碼從 torch.utils.tensorboard 模塊中導入 SummaryWriter 類。SummaryWriter 是一個重要的類,它可以將各種數據(如標量、圖像、直方圖等)寫入日志文件,以便后續使用 TensorBoard 進行可視化分析。

  2. 創建 SummaryWriter 實例

    writer = SummaryWriter("logs")
    

    這行代碼創建了一個 SummaryWriter 類的實例 writer,并指定日志文件的保存目錄為 “logs”。也就是說,后續通過 writer 記錄的數據都會被保存到這個名為 logs 的文件夾中。如果該文件夾不存在,程序會自動創建它。
    在這里插入圖片描述
    運行這段代碼后,IDE會自動生成logs文件夾

  3. 循環記錄標量數據

    # y = x
    for i in range(0, 100):writer.add_scalar("y=x", i, i)
    

    for i in range(0, 100)::這是一個 for 循環,循環變量 i 從 0 到 99 依次取值。
    writer.add_scalar(“y=x”, i, i):調用 writer 的 add_scalar 方法,該方法有三個主要參數:
    A 第一個參數 “y=x” 是一個字符串,作為數據的標簽,用于在 TensorBoard 中標識這組數據。
    B 第二個參數 i 是要記錄的標量值,也就是 y 的值,因為這里 y = x,所以 y 的值就等于 i。
    C 第三個參數 i 是全局步數(global_step),用于表示數據點的順序,在 TensorBoard 中,global_step 通常對應 x 軸,用于展示數據隨時間或迭代次數的變化。

    TIPS:
    在這里插入圖片描述
    我們用CTRL+鼠標左鍵點擊add_scalar會跳出該函數的定義,以及對參數的講解
    在這里插入圖片描述

  4. 關閉 SummaryWriter

    writer.close()
    

    這行代碼調用 writer 的 close 方法,關閉 SummaryWriter 實例。關閉操作會確保所有的數據都被正確寫入到日志文件中,釋放相關資源。

綜上所述,這段代碼的主要目的是使用 SummaryWriter 記錄 y = x 函數關系的數據,并將其保存到日志文件中,以便后續使用 TensorBoard 進行可視化分析。

1.3 可能遇到的問題

1.3.1 問題

在這里插入圖片描述
這是這段代碼的運行結果
在這里插入圖片描述
也會對應在logs目錄下生成相應的文件
在這里插入圖片描述
在這里插入圖片描述
假如我們修改代碼,其實就這一點變化,我們在tensorboard上查看結果的時候會發現問題
在這里插入圖片描述
在這里插入圖片描述

**導致錯誤的原因:**多次記錄了相同標簽(都標為 y = 5x )的數據,且每次記錄的數據范圍、采樣方式等有差異,導致多組數據在同一圖表中疊加顯示,出現多條看似混亂的線。

1.3.2 解決方法

在這里插入圖片描述
首先我們在pycharm中按ctrl+c殺掉當前進程
在這里插入圖片描述
然后我們手動刪除這兩個文件
然后再次運行上述代碼,問題就可以解決了
在這里插入圖片描述

2.使用tensorboard加載數據集中的圖片

2.1 相應代碼

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Imagewriter = SummaryWriter("logs")
image_path = "dataset/train/ants/5650366_e22b7e1065.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
print(img_array.shape)writer.add_image("test", img_array, 1, dataformats = 'HWC')writer.close()

2.2 對上述代碼的解釋

2.2.1 代碼功能概述

這段代碼的主要功能是使用PyTorch 中的 torch.utils.tensorboard 模塊,將一張本地的圖像文件添加到 TensorBoard 的日志中,以便后續使用 TensorBoard 工具對該圖像進行可視化展示。

2.2.2代碼逐行解釋
  1. 導入必要的模塊
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image
  • from torch.utils.tensorboard import SummaryWriter:從 torch.utils.tensorboard 模塊中導入 SummaryWriter 類。SummaryWriter 用于將各種數據(如標量、圖像、直方圖等)寫入日志文件,方便后續使用 TensorBoard 進行可視化分析。
  • import numpy as np:導入 numpy 庫,并將其重命名為 npnumpy 是一個用于科學計算的強大庫,在處理數組和矩陣時非常有用。
  • from PIL import Image:從 PIL(Python Imaging Library)庫中導入 Image 類。PIL 是 Python 中常用的圖像處理庫,Image 類可以用于打開、操作和保存多種圖像文件格式。
  1. 創建 SummaryWriter 實例
writer = SummaryWriter("logs")

創建一個 SummaryWriter 類的實例 writer,并指定日志文件的保存目錄為 "logs"。如果該目錄不存在,程序會自動創建它。后續通過 writer 記錄的數據都會被保存到這個目錄下的日志文件中。

3 打開圖像文件

image_path = "dataset/train/ants/5650366_e22b7e1065.jpg"
img_PIL = Image.open(image_path)
  • image_path = "dataset/train/ants/5650366_e22b7e1065.jpg":定義一個字符串變量 image_path,用于指定要打開的圖像文件的路徑。
  • img_PIL = Image.open(image_path):使用 Image.open() 方法打開指定路徑的圖像文件,并將其存儲為 PIL 圖像對象 img_PIL

4 將 PIL 圖像對象轉換為 numpy 數組

img_array = np.array(img_PIL)

使用 np.array() 函數將 PIL 圖像對象 img_PIL 轉換為 numpy 數組 img_arraynumpy 數組更適合進行數值計算和處理,方便后續傳遞給 SummaryWriter 進行記錄。

5 打印圖像數組的形狀

print(img_array.shape)

打印 img_array 的形狀,即圖像的高度、寬度和通道數。例如,對于 RGB 圖像,形狀通常為 (height, width, 3)

6 向 TensorBoard 日志中添加圖像

writer.add_image("test", img_array, 1, dataformats = 'HWC')

調用 writeradd_image 方法,將圖像添加到 TensorBoard 日志中。該方法有幾個參數:

  • 第一個參數 "test" 是一個字符串,作為圖像的標簽,用于在 TensorBoard 中標識這張圖像。
  • 第二個參數 img_array 是要添加的圖像數據,即前面轉換得到的 numpy 數組。
  • 第三個參數 1 是全局步數(global_step),用于表示圖像的順序或迭代次數,在 TensorBoard 中,global_step 通常對應 x 軸,用于展示數據隨時間或迭代次數的變化。
  • dataformats = 'HWC':指定圖像數據的格式。'HWC' 表示圖像數據的維度順序為高度(Height)、寬度(Width)和通道數(Channels)。
    在這里插入圖片描述
    在這里插入圖片描述

注意:在add_image的定義中如果tensor的形狀是(H,W,3)則需要使用 dataformats = ‘HWC’
7. 關閉 SummaryWriter

writer.close()

調用 writerclose 方法,關閉 SummaryWriter 實例。關閉操作會確保所有的數據都被正確寫入到日志文件中,并釋放相關資源。

2.3 后續操作

運行這段代碼后,會在當前目錄下生成一個名為 logs 的文件夾,其中包含了記錄圖像數據的日志文件。接下來,可以在命令行中使用以下命令啟動 TensorBoard 服務:

tensorboard --logdir=logs

然后在瀏覽器中打開 http://localhost:6006,就可以在 TensorBoard 的界面中看到名為 "test" 的圖像。

綜上所述,這段代碼的主要目的是使用 SummaryWriter 將本地的一張圖像添加到 TensorBoard 日志中,以便后續進行可視化分析。

這樣我們就可以在tensorboard中看到相應的圖像
在這里插入圖片描述
然后我們可以變換圖像(使用圖片的相對路徑),然后把參數step=2
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81746.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81746.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81746.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大模型(LLMs)RAG 版面分析——文本分塊面

大模型(LLMs)RAG 版面分析——文本分塊面 一、為什么需要對文本分塊? 二、能不能介紹一下常見的文本分塊方法? 2.1 一般的文本分塊方法 2.2 正則拆分的文本分塊方法 2.3 Spacy Text Splitter 方法 2.4 基于 langchain 的 Cha…

解構區塊鏈身份認證:從ID到零知識證明的實戰指南

引言 在數字經濟高速發展的今天,數字身份已成為個人與數字世界交互的核心憑證。傳統中心化身份系統存在數據孤島、隱私泄露、單點故障等痛點,而區塊鏈技術憑借??去中心化、不可篡改、可追溯??的特性,為數字身份驗證提供了革命性解決方案…

c#數據結構 線性表篇 非常用線性集合總結

本人能力有限,使用了一些Ai的結論,如有不足還請斧正 目錄 1.HashSet <> Dictionary 2.SortedSet <>提供升序方法的List 3.ArrayList<>List 4.BitArray <> Bit[] array 5.StringCollection <>List 6.StringDictionary<>Dictionary 1…

爬蟲管理平臺-最新版本發布

TaskPyro 是什么&#xff1f; TaskPyro 是一個輕量級的 Python 任務調度平臺&#xff0c;專注于提供簡單易用的任務管理和爬蟲調度解決方案。它能夠幫助您輕松管理和調度 Python 任務&#xff0c;特別適合需要定時執行的爬蟲任務和數據處理任務。 官方文檔&#xff1a;https:/…

過采樣處理

一、數據讀取與初步觀察 首先&#xff0c;使用pandas庫讀取信用卡交易數據集&#xff1a; data pd.read_csv(r"./creditcard.csv") print(data.head())通過head()方法查看數據集的前幾行&#xff0c;初步了解數據的結構和內容。該數據集包含交易時間、交易金額、多…

潮乎盲盒商城系統全開源多級分銷推廣海報獎品兌換試玩概率OSS云存儲多端源碼

一、源碼描述 這是一套潮乎盲盒商城源碼&#xff0c;仿小叮當盲盒商城&#xff0c;后端Laravel框架前端uniappvue&#xff0c;前后端數據庫分離&#xff0c;支持四端同步數據&#xff08;H5小程序等&#xff09;&#xff0c;測試環境: php7.4&#xff0c;mysql5.6&#xff0c;…

c++環境和vscode常用的一些有用插件

環境 WSL需要安裝cmake 編譯器g14 應該是包含了所有std:c23把好像包含部分c26 vscode 需要插件cmake vscode clangd 方便提示吧 File Watch 插件目的在保存.h/.cpp文件時候自動執行vscode 的cmake吧 error lens 方便每次顯示錯誤和警告的提示懶得每次點擊去看錯誤 Edit Sugge…

Spring 轉發 form-data 文件上傳請求時中文文件名亂碼

Spring 轉發 form-data 文件上傳請求時中文文件名亂碼 復現問題找原因解決問題參考 復現問題 后端有兩個接口&#xff1a; /upload 是文件上傳的接口。 /forward 是轉發文件上傳請求的接口。 RequestMapping RestController public class FileUploadController {/*** 直接調…

MySQL 8.4.4 安全升級指南:從漏洞修復到版本升級全流程解析

目錄 二、升級前關鍵注意事項 1. 數據安全與備份 2. 版本兼容性與路徑規劃 三、分步升級操作流程 1. 環境預檢與準備 2. 安裝包部署 3. 強制升級組件 4. 驗證與啟動 一、背景與必要性 近期安全掃描發現生產環境的 MySQL 數據庫存在多個高危漏洞(CVE 詳情參見Oracle 官…

vulkanscenegraph顯示傾斜模型(6.4)-多線程下的記錄與提交

前言 上章深入分析了幀循環中呈現階段的具體實現。本章將分析多線程下的記錄與提交&#xff0c;進一步剖析vsg幀循環過程中的同步機制&#xff0c;并揭露信號量(VkSemaphore)和圍欄(VkFence)以及vsg::FrameBlock與vsg::Barrier在其中的作用。 目錄 1 信號量(VkSemaphore)、柵欄…

Python爬蟲實戰:獲取扇貝單詞數據并分析,為用戶高效學習單詞做參考

一、引言 隨著互聯網的迅猛發展,在線學習資源日益豐富多樣。扇貝單詞作為一款備受歡迎的在線英語學習平臺,積累了海量的單詞學習數據。借助 Python 強大的爬蟲技術獲取這些數據,并運用數據分析和機器學習方法進行深度挖掘,能夠為用戶量身定制更個性化、更高效的單詞學習方…

【Vagrant+VirtualBox創建自動化虛擬環境】Ansible-Playbook

Vagrant 后續Ansible實戰&#xff1a;【Ansible自動化運維實戰&#xff1a;從Playbook到負載均衡指南】-CSDN博客 Vagrant是一個基于Ruby的工具&#xff0c;用于創建和部署虛擬化開發環境。它使用Oracle的開源VirtualBox虛擬化系統&#xff0c;使用 Chef創建自動化虛擬環境 Do…

Codigger Desktop:重新定義數字工作與生活方式

Codigger Desktop是一款革命性的智能桌面操作系統&#xff0c;專為現代數字生活和工作場景打造。它不僅成為開發者的強大生產力工具&#xff0c;更是普通用戶日常數字生活的得力助手&#xff0c;完美實現了專業性與易用性的平衡。 Multimedia Desktop全能數字生活平臺 重新定…

Servlet+tomcat

serverlet 定義&#xff1a;是一個接口&#xff0c;定義了java類被瀏覽器&#xff08;tomcat識別&#xff09;的規則 所以我們需要自定義一個類&#xff0c;實現severlet接口復寫方法 通過配置類實現路徑和servlet的對應關系 執行原理 當用戶在瀏覽器輸入路徑&#xff0c;會…

什么是 DDoS 攻擊?高防 IP 如何有效防護?2025全面解析與方案推薦

一、DDoS 攻擊&#xff1a;互聯網時代的 “數字核武器” 1. DDoS 攻擊的本質與原理 ** 分布式拒絕服務攻擊&#xff08;DDoS&#xff09;** 通過操控海量僵尸設備&#xff0c;向目標服務器發送洪水般請求&#xff0c;耗盡帶寬、連接或計算資源&#xff0c;導致合法用戶無法訪…

Circular Plot系列(一): 環形熱圖繪制

針對近期多個粉絲咨詢環形圖的繪制&#xff0c;我意識到&#xff0c;我們似乎沒有真正介紹過circle圖&#xff0c;但這一類圖確是非常常用的圖&#xff0c;所以這里詳細學習一下circle的繪制&#xff0c;使用的是circlize包&#xff0c;功能很完善&#xff1a;安裝包, #https:/…

【數據挖掘】時間序列預測-時間序列預測策略

時間序列預測策略 &#xff08;1&#xff09;單步預測與多步預測&#xff08;2&#xff09;直接多步預測&#xff08;3&#xff09;遞歸多步預測&#xff08;4&#xff09;直接遞歸的混合預測&#xff08;5&#xff09;多輸入多輸出預測 &#xff08;1&#xff09;單步預測與多…

【LLM】deepseek R1之GRPO訓練筆記(持續更新)

note 相關框架對比&#xff1a; 需微調模型且資源有限 → Unsloth&#xff1b;本地隱私優先的小規模推理 → Ollama&#xff1b;復雜邏輯或多模態任務 → SGLang&#xff1b;高并發生產環境 → vLLM 微調SFT和GRPO是確實能學到新知識的四種格式&#xff08;messages、sharegpt…

【數據結構】--- 單鏈表的增刪查改

前言&#xff1a; 經過了幾個月的漫長歲月&#xff0c;回頭時年邁的小編發現&#xff0c;數據結構的內容還沒有寫博客&#xff0c;于是小編趕緊停下手頭的活動&#xff0c;補上博客以洗清身上的罪孽 目錄 前言 概念&#xff1a; 單鏈表的結構 我們設定一個哨兵位頭節點給鏈…

【JAVA】數據類型與變量:深入理解棧內存分配(4)

核心知識點詳細解釋 Java 的基本數據類型和引用數據類型 基本數據類型 Java 有 8 種基本數據類型&#xff0c;它們可以分為 4 類&#xff1a; 整數類型&#xff1a;byte&#xff08;1 字節&#xff09;、short&#xff08;2 字節&#xff09;、int&#xff08;4 字節&#…