在PyTorch中使用TensorBoard

文章目錄

  • 在PyTorch中使用TensorBoard
    • 1.安裝
    • 2.TensorBoard使用
      • 2.1創建SummaryWriter實例
      • 2.2利用add_scalar()記錄metrics
      • 2.3關閉Writer
      • 2.4啟動TensorBoard
    • 3.本地連接服務器使用TensorBoard
      • 3.1方法一:使用SSH命令進行本地端口轉發
      • 3.2方法二:啟動TensorBoard時添加參數--bind_all(推薦?)
      • 3.3方法三:在終端工具里面配置SSH隧道或端口轉發
    • 參考

在PyTorch中使用TensorBoard

在機器學習中,要改進模型的某些參數,我們通常需要對其進行衡量。TensorBoard 是用于提供機器學習工作流期間所需測量和呈現的工具。它使我們能夠跟蹤實驗指標(例如損失和準確率),呈現模型計算圖,將嵌入向量投影到較低維度的空間等

1.安裝

pip install tensorboard

2.TensorBoard使用

2.1創建SummaryWriter實例

import torch
from torch.utils.tensorboard import SummaryWriter# 記錄的內容保存在“./log”里面,log里面會生成events.out.tfevents的文件
writer = SummaryWriter('./log')  

2.2利用add_scalar()記錄metrics

了解損失等關鍵指標以及它們在訓練過程中的變化是非常重要的。標量有助于保存每個訓練步驟的損失值,或者每個epoch之后的精度。

使用 add_scalar(tag, scalar_value, global_step=None, walltime=None)記錄標量值

# 用法示例:
writer.add_scalar('loss', loss, epoch)
writer.add_scalar('accuracy', accuracy, epoch)
'''
* @name: tensorboard_test.py
* @description:創建一個線性回歸模型,并使用add_scalar記錄損失值
'''
x = torch.arange(-5, 5, 0.1).view(-1, 1)
y = -5 * x + 0.1 * torch.randn(x.size())model = torch.nn.Linear(1, 1)
criterion = torch.nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr = 0.1)def train_model(total_epoch):for epoch in range(total_epoch):y1 = model(x)loss = criterion(y1, y)writer.add_scalar("Loss/train", loss, epoch)  # <-- 注意看這里!!!optimizer.zero_grad()loss.backward()optimizer.step()train_model(10)writer.flush()  # 調用flush()方法確保所有掛起的事件都已寫入磁盤

2.3關閉Writer

最后調用 close() 方法來關閉Writer,釋放資源。

writer.close()

2.4啟動TensorBoard

最后,啟動TensorBoard,指定上面我們使用的根日志目錄。當不需要可視化時,在終端按下Ctrl+C關閉TensorBoard即可。

# 第一種寫法
tensorboard --logdir=./log --host=127.0.0.1 --port=6006 --bind_all
# 第二種寫法
tensorboard --logdir ./log --host 127.0.0.1 --port 6006 --bind_all# 常用啟動命令(只需給定--logdir參數,其余默認)
tensorboard --logdir ./log
  • 參數--logdir指向TensorBoard將在其中查找它可以顯示的事件文件的目錄。TensorBoard將遞歸遍歷以logdir為根的目錄結構,尋找.*tfevents.*文件。
  • 參數--host表示IP地址,默認為127.0.0.1
  • 參數--port表示端口號,默認為6006
  • 參數--bind_all指定 TensorBoard 綁定所有網絡接口,而不僅僅是本地接口。默認情況下,TensorBoard 僅在本地主機上運行,只能通過 localhost 訪問。如果添加 --bind_all 參數,就可以從網絡中的其他設備訪問 TensorBoard。這在需要遠程訪問時非常有用,例如在服務器上訓練模型并從個人電腦上查看訓練過程。

image-20240703150834341

該儀表板顯示了損失隨著epoch的變化,還可以使用它來跟蹤訓練速度、學習率和其他標量值。

3.本地連接服務器使用TensorBoard

由于我們通常是在服務器上運行項目,那么TensorBoard生成的events.out.tfevents格式文件是保存在服務器上面的,如果想要觀測 metrics 就需要將文件下載到本地,然后啟動TensorBoard才可以在本地查看。為了解決這一問題,我們可以使用SSH隧道(也稱SSH端口轉發),將遠程服務器的TensorBoard轉發到本地。具體實現如下:

3.1方法一:使用SSH命令進行本地端口轉發

ssh -L [本地端口]:[遠程地址]:[遠程端口] [用戶名]@[遠程服務器IP]# example:
ssh -L 6006:127.0.0.1:6006 root@192.168.1.224

解釋:這條命令將本地的6006端口轉發到遠程服務器192.168.1.224的6006端口上。這樣我們就可以通過在本地訪問127.0.0.1:6006來訪問遠程服務器的127.0.0.1:6006。

3.2方法二:啟動TensorBoard時添加參數–bind_all(推薦?)

tensorboard --logdir ./log --bind_all

在本地通過(遠程服務器IP地址):6006/來查看訓練過程。

3.3方法三:在終端工具里面配置SSH隧道或端口轉發

流行的終端工具肯定是Xshell,Xshell的隧道配置可以查看這篇博客【使用Xshell/ssh 連接 遠程服務器使用Tensorboard】。但是我個人喜歡使用Tabby,Tabby是一款免費的顏值很高的終端工具,也推薦大家使用。

Tabby的端口轉發的添加,在設置->配置和連接->端口里面進行配置添加。

image-20240702224610667

參考

  • How to use TensorBoard with PyTorch
  • Visualizing Models, Data, and Training with TensorBoard
  • torch.utils.tensorboard官方文檔
  • 使用TensorBoard可視化訓練過程
  • 在Pytorch中使用Tensorboard可視化訓練過程

😃😃😃

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

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

相關文章

Python 全棧體系【三階】(二)

第一章 Django 五、模板 1. 概述 Django中的模板是指可以動態生成任何基于文本格式文件的技術&#xff08;如HTML、CSS等&#xff09;。 Django中內置了自己的模板系統&#xff0c;稱為DTL(Django Template Language), Django模板語言。 2. 配置 settings.py中關于模板的…

如何將資源前端通過 Docker 部署到遠程服務器

作為一個程序員&#xff0c;在開發過程中&#xff0c;經常會遇到項目部署的問題&#xff0c;在現在本就不穩定的大環境下&#xff0c;前端開發也需要掌握部署技能&#xff0c;來提高自己的生存力&#xff0c;今天就詳細說一下如何把一個前端資源放到遠程服務器上面通過docker部…

紫外線芯片殺菌燈問題

1.265nm深紫外光子能量是多少 504kj/mol 2.紫外光分解有害物質的原理是什么&#xff1f; 通過紫外光分子鍵打斷有害物質的分子鍵&#xff0c;使其分解成co2和H2o等無害物質 3.紫外光殺菌的原理是什么&#xff1f; 通過特定波長的紫外光照射&#xff0c;破壞和改變微生物的…

【網絡協議】PIM

PIM 1 基本概念 PIM&#xff08;Protocol Independent Multicast&#xff09;協議&#xff0c;即協議無關組播協議&#xff0c;是一種組播路由協議&#xff0c;其特點是不依賴于某一特定的單播路由協議&#xff0c;而是可以利用任意單播路由協議建立的單播路由表完成RPF&…

【Python】不小心卸載pip后(手動安裝pip的兩種方式)

文章目錄 方法一&#xff1a;使用get-pip.py腳本方法二&#xff1a;使用easy_install注意事項 不小心卸載pip后&#xff1a;手動安裝pip的兩種方式 在使用Python進行開發時&#xff0c;pip作為Python的包管理工具&#xff0c;是我們安裝和管理Python庫的重要工具。然而&#x…

產品經理技能揭秘:如何巧妙啟發需求,引領市場新潮流

文章目錄 引言一、需求啟發的定義二、需求啟發的藝術三、需求啟發的重要性四、需求啟發的流程五、需求啟發的問題與挑戰內部自身的問題與挑戰&#xff1a;挑戰一&#xff1a;知識的詛咒挑戰二&#xff1a;做與定義的不同挑戰三&#xff1a;溝通障礙挑戰四&#xff1a;需求變更頻…

solidity:構造函數和修飾器、事件

構造函數? 構造函數&#xff08;constructor&#xff09;是一種特殊的函數&#xff0c;每個合約可以定義一個&#xff0c;并在部署合約的時候自動運行一次。它可以用來初始化合約的一些參數&#xff0c;例如初始化合約的owner地址&#xff1a; address owner; // 定義owner變…

電腦找回徹底刪除文件?四個實測效果的方法【一鍵找回】

電腦數據刪除了還能恢復嗎&#xff1f;可以的&#xff0c;只要我們及時撤銷上一步刪除操作&#xff0c;還是有幾率找回徹底刪除文件。 當我們的電腦文件被徹底刪除后&#xff0c;盡管恢復的成功率可能受到多種因素的影響&#xff0c;但仍有幾種方法可以嘗試找回這些文件。本文整…

使用 docker buildx 構建跨平臺鏡像

buildx是Docker官方提供的一個構建工具&#xff0c;它可以幫助用戶快速、高效地構建Docker鏡像&#xff0c;并支持多種平臺的構建。使用buildx&#xff0c;用戶可以在單個命令中構建多種架構的鏡像&#xff0c;例如x86和arm架構&#xff0c;而無需手工操作多個構建命令。此外bu…

【React Hooks原理 - useCallback、useMemo】

介紹 在實際項目中&#xff0c;useCallback、useMemo這兩個Hooks想必會很常見&#xff0c;可能我們會處于性能考慮避免組件重復刷新而使用類似useCallback、useMemo來進行緩存。接下來我們會從源碼和使用的角度來聊聊這兩個hooks。【源碼地址】 為什么要有這兩個Hooks 在開始…

使用selenium定位input標簽下的下拉框

先來看一下頁面效果&#xff1a;是一個可輸入的下拉列表 再來看一下下拉框的實現方式&#xff1a; 是用<ul>和<li>方式來實現的下拉框&#xff0c;不是select類型的&#xff0c;所以不能用傳統的select定位方法。 在著手定位元素前一定一定要先弄清楚下拉列表…

前后端的學習框架

前后端的學習框架 視頻鏈接&#xff1a;零基礎AI全棧開發系列教程&#xff08;一&#xff09;_嗶哩嗶哩_bilibili

什么是后端?

1、什么是后端&#xff1f; 后端開發人員從事于構建Web應用程序背后的實際邏輯&#xff0c;負責通過API向前端或者其他系統提供其他需要的信息&#xff0c;如&#xff1a;數據。 實際上&#xff0c;開發web應用中對用戶不可見的部分&#xff0c;稱為web后端&#xff0c;也就是…

初學vue3與ts:獲取組件ref實例

/*** 獲取組件ref* param {VueComponentIns} 組件實例* returns 組件ref*/ // eslint-disable-next-line export function useCompRef<T extends abstract new (...args: any) > any>(_: T) {return ref<InstanceType<T>>(); }使用 <a-com ref"a…

匯凱金業:數字貨幣對經濟的影響有哪些

隨著信息技術的飛速發展&#xff0c;數字貨幣作為一種新興的貨幣形態&#xff0c;正逐步走進人們的視野&#xff0c;并對傳統經濟體系產生著深遠影響。它不僅革新了交易方式&#xff0c;更在重塑金融格局、賦能經濟發展等方面展現出巨大潛力。 一、交易效率的“加速器” 數字…

單例模式之懶漢式

文章目錄 單例模式&#xff08;懶漢式&#xff09;代碼懶漢式&#xff08;線程不安全&#xff09;懶漢式&#xff08;線程安全&#xff0c;加鎖&#xff09;雙重檢查鎖&#xff08;線程安全&#xff0c;推薦&#xff09; 單例模式&#xff08;懶漢式&#xff09; 懶漢式是符合…

xxl-job集成SpringBoot

安裝xxl-job客戶端一般有很多方式&#xff0c;我這里給大家提供兩種安裝方式&#xff0c;包含里面的各項配置等等。 前期需要準備好MySQL數據庫。復制SQL到數據庫里面。 # # XXL-JOB v2.4.2-SNAPSHOT # Copyright (c) 2015-present, xuxueli.CREATE database if NOT EXISTS x…

項目機會:4萬平:智能倉,AGV,穿梭車,AMR,WMS,提升機,機器人……

導語 大家好&#xff0c;我是社長&#xff0c;老K。專注分享智能制造和智能倉儲物流等內容。 如下為近期國內智能倉儲物流相關項目的公開信息線索&#xff0c;這些項目具體信息會發布到知識星球&#xff0c;請感興趣的球友先人一步到知識星球【智能倉儲物流技術研習社】自行下載…

《SoC設計方法與實現》:全面掌握系統芯片設計精髓(可下載)

SoC&#xff08;System on Chip&#xff0c;系統級芯片&#xff09;設計是一項復雜而精細的工程活動&#xff0c;它涉及到將一個完整的電子系統的所有組件集成到一個單一的芯片上&#xff0c;包括處理器核心、內存、輸入/輸出端口以及可能的其他功能模塊。這種集成不僅要求設計…

oracle存儲結構-----邏輯存儲結構(表空間、段、區、塊)

文章目錄 oracle存儲結構圖&#xff08;邏輯存儲物理存儲&#xff09;oracle邏輯存儲結構圖邏輯存儲結構、表空間、段、區、數據塊的關系&#xff1a;1、數據 塊&#xff08;block&#xff09;---邏輯存儲最小單位2、 數據區&#xff08;extent&#xff09;--存儲空間分配和回收…