python打卡第45天

tensorboard的發展歷史和原理

一、發展歷史

起源與 TensorFlow 一同誕生 (2015年底):

TensorBoard 最初是作為?TensorFlow?開源項目(2015年11月發布)的一部分而設計和開發的。其核心目標是解決深度學習模型訓練過程中的“黑盒”問題,提供直觀的方式來觀察模型內部狀態、訓練指標和計算圖結構。早期核心功能:?標量可視化(損失、準確率等)、計算圖可視化、簡單的直方圖(分布)可視化。

逐步擴展功能 (2016-2018):

Embedding Projector:?引入了強大的高維數據(如詞嵌入、激活)降維和可視化工具(PCA, t-SNE),用于探索和理解嵌入空間。圖像、音頻、文本支持:?增加了直接查看訓練/驗證集中的樣本圖像、生成的音頻樣本、文本摘要的功能,方便檢查輸入數據和模型輸出。

TensorFlow 2.x 時代與插件化 (2019至今):

緊密集成 Keras:?TensorFlow 2.x 將 Keras 作為高級API,TensorBoard 也深度集成了 Keras 的回調機制 (tf.keras.callbacks.TensorBoard),使用戶能更便捷地記錄數據。模型圖可視化改進:?更好地支持?tf.function?和 Eager Execution 模式下的模型結構可視化。Profile 工具:?集成了強大的性能分析器,可以分析模型在 CPU/GPU/TPU 上的執行時間、內存消耗、算子耗時等,用于性能瓶頸定位和優化。

二、核心原理

TensorBoard 的工作原理可以概括為?“寫日志” -> “讀日志” -> “可視化”?三個步驟:

數據記錄 (Write Logs):

在模型訓練/評估代碼中,使用?Summary API?在關鍵點記錄需要可視化的數據。

TensorFlow:?tf.summary.scalar(),?tf.summary.image(),?tf.summary.histogram(),?tf.summary.text(),?tf.summary.audio(),?tf.summary.graph()?等。

PyTorch:?torch.utils.tensorboard.SummaryWriter.add_scalar(),?add_image(),?add_histogram()?等。

其他框架:?使用相應的適配器庫。

這些 API 調用并不會立即進行昂貴的渲染操作,而是將數據序列化為?tf.Event?協議緩沖區 (Protocol Buffer) 格式。

這些?tf.Event?記錄被順序追加寫入到磁盤上的?事件文件?中,通常命名為?events.out.tfevents.*。

寫入器 (SummaryWriter) 負責管理這些事件文件(如輪轉、刷新)。

數據加載與聚合 (Read and Aggregate Logs):

用戶通過命令行 (tensorboard --logdir=path/to/logs) 或 Notebook 內聯方式啟動 TensorBoard 服務器。

TensorBoard 后端服務 (Python) 監控指定的日志目錄 (--logdir)。

后端使用高效的?tensorboard.data.server?組件:

掃描目錄:?遞歸掃描?--logdir?下的所有子目錄,尋找事件文件 (*.tfevents.*)。

解析事件文件:?讀取并解析這些二進制事件文件,從中提取出存儲的?tf.Event?記錄。

聚合數據:?將解析出的原始數據(標量值、圖像字節、直方圖桶計數、圖結構等)根據其類型和標簽(Tag)進行聚合和組織,存儲在內存或緩存中,構建出可供前端查詢的數據結構。

處理運行 (Runs):?通常將日志目錄下的每個子目錄視為一個獨立的“運行”(Run,代表一次實驗或訓練過程),便于比較不同實驗的結果。

可視化展示 (Visualize):

TensorBoard 啟動一個?Web 服務器?(默認端口 6006)。

用戶在瀏覽器中訪問?http://localhost:6006?(或指定的地址)。

瀏覽器加載 TensorBoard 的前端應用 (基于 JavaScript, HTML, CSS)。

前端通過?HTTP API?向后端發送查詢請求(例如:獲取某個 Run 下某個 Tag 的所有標量數據點;獲取最新一批圖像;獲取模型圖結構等)。

后端接收到請求后,從它聚合好的數據結構中檢索出相應的數據,并通過?JSON?或其他格式返回給前端。

前端使用?可視化庫(如?D3.js?用于圖表繪制,?Three.js?用于 Embedding Projector 的 3D 渲染)將接收到的數據渲染成交互式的圖表和視圖(Scalars 折線圖、Images 網格、Distributions 直方圖動畫、Graphs 節點連接圖、Embeddings 3D點云等)。

用戶可以在前端界面交互(如縮放圖表、切換 Runs/Tags、調整 Embedding Projector 的參數、在計算圖中點擊節點查看詳情等),這些交互會觸發新的 API 請求,實現動態更新視圖。

import os
from torch.utils.tensorboard import SummaryWriterbase_dir = 'runs/cifar10_mlp_experiment'
log_dir = base_dir# 查找可用目錄名
counter = 1
while os.path.exists(log_dir):log_dir = f"{base_dir}_{counter}"counter += 1# 創建SummaryWriter
writer = SummaryWriter(log_dir)
# 記錄每個 Batch 的損失和準確率
writer.add_scalar('Train/Batch_Loss', batch_loss, global_step)
writer.add_scalar('Train/Batch_Accuracy', batch_acc, global_step)# 記錄每個 Epoch 的訓練指標
writer.add_scalar('Train/Epoch_Loss', epoch_train_loss, epoch)
writer.add_scalar('Train/Epoch_Accuracy', epoch_train_acc, epoch)dataiter = iter(train_loader)
images, labels = next(dataiter)
images = images.to(device)
writer.add_graph(model, images)  # 通過真實輸入樣本生成模型計算圖# 可視化原始訓練圖像
img_grid = torchvision.utils.make_grid(images[:8].cpu()) # 將多張圖像拼接成網格狀(方便可視化),將前8張圖像拼接成一個網格
writer.add_image('原始訓練圖像', img_grid)# 可視化錯誤預測樣本(訓練結束后)
wrong_img_grid = torchvision.utils.make_grid(wrong_images[:display_count])
writer.add_image('錯誤預測樣本', wrong_img_grid)if (batch_idx + 1) % 500 == 0:for name, param in model.named_parameters():writer.add_histogram(f'weights/{name}', param, global_step)  # 權重分布if param.grad is not None:writer.add_histogram(f'grads/{name}', param.grad, global_step)  # 梯度分布

@浙大疏錦行

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

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

相關文章

CentOS 7如何編譯安裝升級gcc至7.5版本?

CentOS 7如何編譯安裝升級gcc版本? 由于配置CentOS-SCLo-scl.repo與CentOS-SCLo-scl-rh.repo后執行yum install -y devtoolset-7安裝總是異常,遂決定編譯安裝gcc7.5 # 備份之前的yum .repo文件至 /tmp/repo_bak 目錄 mkdir -p /tmp/repo_bak && cd /etc…

中山大學美團港科大提出首個音頻驅動多人對話視頻生成MultiTalk,輸入一個音頻和提示,即可生成對應唇部、音頻交互視頻。

由中山大學、美團、香港科技大學聯合提出的MultiTalk是一個用于音頻驅動的多人對話視頻生成的新框架。給定一個多流音頻輸入和一個提示,MultiTalk 會生成一個包含提示所對應的交互的視頻,其唇部動作與音頻保持一致。 相關鏈接 論文:https://a…

iOS 門店營收表格功能的實現

iOS 門店營收表格功能實現方案 核心功能需求 數據展示:表格形式展示門店/日期維度的營收數據排序功能:支持按營收金額、增長率等排序篩選功能:按日期范圍/門店/區域篩選交互操作:點擊查看詳情、數據刷新數據可視化:關…

怎么解決cesium加載模型太黑,程序崩潰,不顯示,位置不對模型太大,Cesium加載gltf/glb模型后變暗

有時候咱們cesium加載模型時候型太黑,程序崩潰,不顯示,位置不對模型太大怎么辦 需要處理 可以聯系Q:424081801 謝謝 需要處理 可以聯系Q:424081801 謝謝

移植driver_monitoring_system里的MobileNet到RK3588

根據下面的內容寫一篇技術博客,要求增加更多的解釋,讓普通讀者也能了解為什么這樣做,具體怎么做 移植driver_monitoring_system里的MobileNet到RK3588 一、背景二、操作步驟2.1 下載源碼2.2 Tensorflow轉成ONNX2.2.1 在x86上創建容器,安裝依賴2.2.2 保存為saved-model2.2.3 sav…

低代碼平臺前端頁面表格字段綁定與后端數據傳輸交互主要有哪些方式?華為云Astro在這方面有哪些方式?

目錄 ?? 一、低代碼平臺中常見的數據綁定與交互方式 1. 接口綁定(API 調用) 2. 數據源綁定(DataSource) 3. 變量中轉(臨時變量 / 頁面狀態) 4. 數據模型綁定(模型驅動) ?? 二、華為云 Astro 輕應用的實現方式 ? 1. 數據源綁定(API服務+API網關) ? 2. 變…

《doubao-lite-32k 模型緩存機制使用指南》

doubao-lite-32k 模型緩存機制使用指南 一、緩存概述 1. 緩存作用 doubao-lite-32k 模型的緩存(Session 緩存)主要用于多輪對話場景,實現以下功能: 存儲歷史對話信息(Token),避免重復傳輸上下文,減少計算資源消耗。 優化長上下文(最長 32K Token)處理效率,提升多…

量子計算突破:新型超導芯片重構計算范式

??2024年IBM 1281量子比特超導芯片實現0.001%量子錯誤率,計算速度達經典超算2.5億倍??。本文解析: ??物理突破??:鉭基超導材料使量子相干時間突破??800μs??(提升15倍)??架構革命??:十字形…

云計算 Linux Rocky day03(which、快捷鍵、mount、家目錄、ls、alias、mkdir、rm、mv、cp、grep)

云計算 Linux Rocky day03(which、快捷鍵、mount、家目錄、ls、alias、mkdir、rm、mv、cp、grep) 目錄 云計算 Linux Rocky day03(which、快捷鍵、mount、家目錄、ls、alias、mkdir、rm、mv、cp、grep)1.which找到命令所對應的程序…

負載均衡LB》》HAproxy

Ubuntu 22.04 安裝HA-proxy 官網 資料 # 更新系統包列表: sudo apt update # 安裝 HAproxy sudo apt install haproxy -y # 驗證安裝 haproxy -v # 如下圖配置 Haproxy ##### 基于IP的訪問控制 acl ctrl_ip src 172.25.254.1 172.25.254.20 192.168.0.0/24 #…

輕創業技術方案:基于格行雙目攝像頭的代理系統設計!低成本創業項目有哪些?2025輕資產創業項目排行榜前十名!0成本創業項目推薦!格行代理項目靠譜嗎?

沒本金,沒資源,沒人脈,想掙錢且有持續穩定的現金流,只有一條路就是輕創業!這里說個表哥的真實創業故事。 我表哥90后,普通農村人,中專畢業跟朋友一起外出打工,剛開始也是吃喝玩樂不…

【推薦算法】Embedding+MLP:TensorFlow實現經典深度學習推薦模型詳解

EmbeddingMLP:TensorFlow實現經典深度學習模型詳解 1. 算法邏輯模型結構和工作流程關鍵組件 2. 算法原理與數學推導Embedding層原理MLP前向傳播反向傳播與優化 3. 模型評估常用評估指標評估方法 4. 應用案例:推薦系統CTR預測問題描述模型架構性能優化 5.…

黑馬點評【基于redis實現共享session登錄】

目錄 一、基于Session實現登錄流程 1.發送驗證碼: 2.短信驗證碼登錄、注冊: 3.校驗登錄狀態: 4.session共享問題 4.1為什么會出現 Session 集群共享問題? 4.2常見解決方案 1. 基于 Cookie 的 Session(客戶端存儲&#xff0…

Python讀取阿里法拍網的html+解決登錄cookie

效果圖 import time from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from lxml import etreedef get_taobao_auct…

【win | docker開啟遠程配置】使用 SSH 隧道訪問 Docker的前操作

在主機A pycharm如何連接遠程主機B win docker? 需要win docker配置什么? 快捷配置-主機B win OpenSSH SSH Server https://blog.csdn.net/z164470/article/details/121683333 winR,打開命令行,輸入net start sshd,啟動SSH。 或者右擊我的電腦&#…

Cursor生成Java的架構設計圖

文章目錄 整體說明一、背景二、前置條件三、生成 Promt四、結果查看五、結果編輯 摘要: Cursor生成Java的架構設計圖 關鍵詞: Cursor、人工智能 、開發工具、Java 架構設計圖 整體說明 Cursor 作為現在非常好用的開發工具,非常的火爆&#…

1Panel運行的.net程序無法讀取系統字體(因為使用了docker)

問題來源 我之前都是使用的寶塔面板,之前我也部署過我的程序,就沒有什么問題,但是上次我部署我的程序的時候,就提示無法找到字體Arial。 我的程序中使用該字體生成驗證碼。 我多次安裝了微軟的字體包,但是依舊沒有效…

面試總結。

一、回流(重排)與重繪(Repaint) 優化回答: 概念區分: 回流(Reflow/Relayout):當元素的幾何屬性(如寬高、位置、隱藏 / 顯示)發生改變時&#xff…

TensorFlow深度學習實戰(20)——自組織映射詳解

TensorFlow深度學習實戰(20)——自組織映射詳解 0. 前言1. 自組織映射原理2. 自組織映射的優缺點3. 使用自組織映射實現顏色映射小結系列鏈接 0. 前言 自組織映射 (Self-Organizing Map, SOM) 是一種無監督學習算法,主要用于高維數據的降維、…

Go內存泄漏排查與修復最佳實踐

一、引言 即使Go語言擁有強大的垃圾回收機制,內存泄漏仍然是我們在生產環境中經常面臨的挑戰。與傳統印象不同,垃圾回收并不是萬能的"記憶清道夫",它只能處理那些不再被引用的內存,而無法識別那些仍被引用但實際上不再…