python打卡 DAY 45 Tensorboard使用介紹

目錄

一、TensorBoard 發展歷史與原理

1. 演進歷程

2. 核心架構原理

二、TensorBoard 核心功能操作

1. 基礎配置方法

2. 常用功能速查表

三、CIFAR10 實戰演示

1. MLP 模型監控配置

2. CNN 特征可視化

四、TensorBoard 高級功能

1. 超參數調優

2. 3D點云可視化

五、啟動與界面操作指南

1. 終端啟動命令

2. 界面操作技巧

六、PyTorch Lightning 集成

自動日志記錄配置

七、常見問題解決方案

TensorBoard 使用問題排查

八、最佳實踐建議


一、TensorBoard 發展歷史與原理

1. 演進歷程

2. 核心架構原理

工作流程

  1. 訓練程序生成日志文件(*.tfevents

  2. TensorBoard 服務監聽日志目錄

  3. 瀏覽器訪問可視化面板

二、TensorBoard 核心功能操作

1. 基礎配置方法

from torch.utils.tensorboard import SummaryWriter# 初始化寫入器
writer = SummaryWriter(log_dir='runs/exp1',  # 實驗目錄flush_secs=10         # 寫入磁盤頻率
)# 記錄標量數據
writer.add_scalar('Loss/train', train_loss, global_step=epoch)# 記錄圖像
writer.add_image('Sample', img_tensor, global_step=epoch)# 記錄模型圖
writer.add_graph(model, input_tensor)# 關閉寫入器
writer.close()

2. 常用功能速查表

功能方法適用場景
標量圖表add_scalar()損失/準確率跟蹤
圖像展示add_images()輸入/輸出可視化
模型結構add_graph()網絡調試
直方圖add_histogram()參數分布監控
嵌入向量add_embedding()高維數據降維
PR曲線add_pr_curve()分類閾值分析

三、CIFAR10 實戰演示

1. MLP 模型監控配置

def train_mlp():writer = SummaryWriter('runs/cifar10_mlp')model = MLP().to(device)for epoch in range(10):model.train()for i, (inputs, labels) in enumerate(train_loader):# ...訓練步驟...# 每100步記錄一次if i % 100 == 0:writer.add_scalar('Loss/train', loss.item(), epoch*len(train_loader)+i)writer.add_scalar('Accuracy/train', acc, epoch*len(train_loader)+i)# 驗證集記錄val_acc = test(model, val_loader)writer.add_scalar('Accuracy/val', val_acc, epoch)# 記錄參數分布for name, param in model.named_parameters():writer.add_histogram(f'params/{name}', param, epoch)writer.add_histogram(f'grads/{name}', param.grad, epoch)writer.close()

2. CNN 特征可視化

def train_cnn():writer = SummaryWriter('runs/cifar10_cnn')model = CNN().to(device)# 添加模型圖dummy_input = torch.rand(1, 3, 32, 32).to(device)writer.add_graph(model, dummy_input)for epoch in range(10):# ...訓練代碼...# 記錄特征圖if epoch % 2 == 0:sample, _ = next(iter(val_loader))feature_maps = get_feature_maps(model, sample[0:1])  # 自定義獲取特征圖函數writer.add_images('FeatureMaps/conv1', feature_maps[0], epoch, dataformats='NCHW')# 記錄混淆矩陣cm = compute_confusion_matrix(model, val_loader)writer.add_figure('ConfusionMatrix', plot_confusion_matrix(cm), epoch)writer.close()

四、TensorBoard 高級功能

1. 超參數調優

from torch.utils.tensorboard.summary import hparamsdef log_hparams(writer, config, metrics):# 記錄超參數和最終指標writer.add_hparams(hparam_dict=config,metric_dict=metrics,run_name='hparam_tuning')# 使用示例
log_hparams(writer, {'lr': 0.01, 'bsize': 64},{'accuracy': 0.92, 'loss': 0.2})

2. 3D點云可視化

# 適用于3D計算機視覺任務
points = torch.rand(100, 3)  # 100個3D點
labels = torch.randint(0, 5, (100,))  # 分類標簽writer.add_embedding(points,metadata=labels,tag='3D_points',global_step=epoch
)

五、啟動與界面操作指南

1. 終端啟動命令

# 基本啟動
tensorboard --logdir=runs

# 指定端口和主機
tensorboard --logdir=runs --port=6006 --host=0.0.0.0

# 多實驗目錄比較
tensorboard --logdir=run1:runs/exp1,run2:runs/exp2

2. 界面操作技巧

功能操作方式
平滑曲線調整Smoothing滑塊
下載數據點擊圖表右上角下載按鈕
對比實驗勾選左側不同運行記錄
3D旋轉鼠標拖拽3D可視化區域

六、PyTorch Lightning 集成

自動日志記錄配置

import pytorch_lightning as pl
from pytorch_lightning.loggers import TensorBoardLoggerlogger = TensorBoardLogger(save_dir='lightning_logs',name='cifar10_experiment',version='v1.0'
)trainer = pl.Trainer(logger=logger,max_epochs=10,log_every_n_steps=50
)
trainer.fit(model)

七、常見問題解決方案

TensorBoard 使用問題排查

問題現象可能原因解決方案
無數據顯示日志路徑錯誤檢查--logdir參數匹配
圖表異常數據格式錯誤驗證張量形狀和數據類型
加載緩慢日志文件過大減少記錄頻率或清理舊日志
無法訪問端口占用更換端口或殺死占用進程

八、最佳實踐建議

  1. 日志組織規范

    runs/
    ├── exp1/? # 實驗1
    ├── exp2/? # 實驗2
    └── hparams/? # 超參數搜索

  2. 高效記錄原則

    • 非必要不記錄高頻率數據

    • 定期清理舊實驗數據

    • 對大型張量使用降采樣

  3. 團隊協作技巧

    # 將TensorBoard服務共享給團隊
    tensorboard dev upload --logdir runs \
    --name "My Experiment" \
    --description "CIFAR10 with ResNet18"

@浙大疏錦行

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

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

相關文章

Swift 中 Result 類型全解析:從基礎到進階

在現代 iOS 開發中,Swift 的 Result 類型是處理同步與異步錯誤的一大利器。相比傳統的 throws / do-catch 語法,它更清晰、結構化,也更易于組合式編程。 本文將帶你從 Result 的基礎定義出發,逐步深入其在實際項目中的多種應用&am…

Github 2025-06-28 Rust開源項目日報 Top10

根據Github Trendings的統計,今日(2025-06-28統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Rust項目10Rust實現的非官方Bitwarden兼容服務器 創建周期:2317 天開發語言:Rust協議類型:GNU Affero General Public License v3.0Star數量…

python 寫一個判斷文本中是否有手機號的函數,并提取出文本中的手機號

我們需要判斷文本中是否有手機號,并提取出手機號。 中國大陸的手機號規則: 1. 通常為11位數字。 2. 目前手機號段分配如下: - 移動號段:134(0-8)、135、136、137、138、139、147、148、150、151、152、157、158、159、172、178、1…

作物生長模型Oryza V3實戰12:drate程序詳解

drate(v2).exe,可以通過觀察移植日、穗部分化、開花和成熟的物候日期(即日和年),DRATE(v2)用于校準四個階段的發展速率:幼苗期(DVRJ,oCday-1)、光周期敏感期(DVRI,oCday-1)、穗部發育期(DVRP,oCday-1)和生殖期(DVRR,oCday-1)。 一 準備輸入文件 1、準備.crp,.…

利用視覺-語言模型搭建機器人靈巧操作的支架

25年6月來自斯坦福和德國卡爾斯魯厄理工的論文“Scaffolding Dexterous Manipulation with Vision-Language Models”。 靈巧機械手對于執行復雜的操作任務至關重要,但由于演示收集和高維控制的挑戰,其訓練仍然困難重重。雖然強化學習 (RL) 可以通過在模…

面試拷打-20250701

memcopy和memmov 詳細解釋 示例1:不重疊的內存區域 正常復制。 示例2:重疊的內存區域 原始數據:src2是一個包含字符串"HelloWorld"的字符數組。使用memcpy: memcpy(src2 2, src2, 5);試圖將src2中的前5個字符復制…

什么是 BigKey?

Redis BigKey 深度解析:識別、危害與優化方案 什么是 BigKey? 在 Redis 中,BigKey 是指存儲大量數據的單個鍵,這些鍵通常具有異常大的內存占用或包含大量元素。BigKey 不是由數據類型定義,而是由其資源消耗決定的。 …

量化選股策略 聚寬

# 量化選股策略完整分析與優化建議 ## 策略整體架構分析 這個量化交易策略主要由以下幾個核心部分組成: 1. **初始化設置**:配置基準指數、交易參數和全局變量 2. **選股邏輯**:通過財務指標篩選優質股票 3. **股票過濾**:排除…

Python 數據分析:numpy,抽提,布爾索引2。

目錄 1 示例代碼2 歡迎糾錯3 論文寫作/Python 學習智能體------以下關于 Markdown 編輯器新的改變功能快捷鍵合理的創建標題,有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個適合你的列表創建一個表格設定內容居中、居左、居右S…

解決leetcode第3597題分割字符串

3597. 分割字符串 難度:中等 問題描述: 給你一個字符串 s,按照以下步驟將其分割為 互不相同的段 : 從下標 0 開始構建一個段。 逐字符擴展當前段,直到該段之前未曾出現過。 只要當前段是唯一的,就將其…

電源芯片之DCDC初探索ING

1. 概述 DC-DC轉換器的意思是直流變直流(不同的直流電源值得轉換),是一種在直流電路中將一個電壓值的電能變為另一個電壓值的電能裝置。 DC-DC轉換器一般由控制芯片、電感線圈、二極管、三極管、電容器構成。 2. 基本拓撲結構 2.1 非隔離…

JavaEE:分布式session

一、使用Redis存儲分布式session&#xff1a; 1.SpringBoot整合Redis&#xff0c;見如下地址&#xff1a; JavaEE&#xff1a;SpringBoot整合Redis_a526001650a-CSDN博客 2.代碼實現分布式session存儲(此處以token為例)&#xff1a; Autowired private RedisTemplate<St…

OpenCV CUDA模塊設備層-----“大于閾值設為零” 的圖像處理函數 thresh_to_zero_inv_func()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 OpenCV 的 CUDA 模塊&#xff08;cudev&#xff09; 中的一個仿函數生成器&#xff0c;用于創建一個 “大于閾值設為零” 的圖像處理函數對象。 …

FastGPT與MCP:解鎖AI新時代的技術密碼

一、AI 浪潮中的新星&#xff1a;FastGPT 與 MCP 登場 在當今科技飛速發展的時代&#xff0c;人工智能&#xff08;AI&#xff09;已成為推動各行業變革的核心力量。從智能語音助手到復雜的圖像識別系統&#xff0c;AI 的應用無處不在&#xff0c;而其中的關鍵技術 —— 語言模…

browser-tools-mcp + excel-mcp-server + cursor 實現讀取網頁信息自動寫入Excel

browser-tools-mcp excel-mcp-server cursor 實現讀取網頁信息自動寫入Excel 文章目錄 browser-tools-mcp excel-mcp-server cursor 實現讀取網頁信息自動寫入Excel一、安裝node.js和npm1、安裝nvm2、安裝最新版本的node.js 二、安裝browser-tools-mcp1、安裝 BrowserTools…

Linux安裝JDK和Maven

Linux安裝JDK和Maven 安裝JDK1.8 oracle官網 https://www.oracle.com 下載包地址&#xff1a;https://www.oracle.com/java/technologies/downloads/archive/ 步驟1&#xff1a;官網下載壓縮包 點擊想要下載的版本&#xff0c;需要登錄Oracle的賬號&#xff0c;沒有的話需要…

MySQL主從復制與數據庫集群深度解析

一、主從復制核心架構與復制模式 MySQL主從復制是構建分布式數據庫的基礎技術&#xff0c;通過日志同步機制實現數據冗余與讀寫分離。其核心架構分為三層&#xff1a; 日志記錄層&#xff1a;主庫將數據變更寫入二進制日志&#xff08;Binlog&#xff09;網絡傳輸層&#xff…

安裝emsdk 4.0.10報Connection reset by peer解決

出錯如下: 使用瀏覽器下載所需文件 https://storage.googleapis.com/webassembly/emscripten-releases-builds/deps/node-v22.16.0-darwin-x64.tar.gz 移動到到emsdk/downloads下 修改emsdk.py download_even_if_exists=True 設置環境變量

win11,visual studio 2022,配置dcmtk,opencv

一、配置dcmtk 1 文件下載---地址&#xff0c;Software Development based on DCMTK - dicom.offis.de 源文件下載&#xff0c;選擇.zip下載&#xff0c;.tar.gz為Linux和macOS下面常見的壓縮包 支持庫下載 解決 DCMTK 在 Windows 上編譯時所需的依賴庫問題 libiconv GNU有…

2025 最新 Appium Inspector 環境搭建教程

1 環境搭建背景 版本升級&#xff1a;Appium 2.0 版本替代 1.x&#xff0c;原 Appium Desktop 因安全漏洞和功能廢棄不再適用。需求痛點&#xff1a;Android Studio 僅支持 debug 程序元素定位&#xff0c;需通過 Appium Inspector 實現通用 APK 元素定位。 2 環境搭建步驟 …