6.3 day 35

知識點回顧:

  1. 三種不同的模型可視化方法:推薦torchinfo打印summary+權重分布可視化
  2. 進度條功能:手動和自動寫法,讓打印結果更加美觀
  3. 推理的寫法:評估模式
可視化

理解深度學習網絡最重要的2點:

1.了解損失如何定義的,知道損失從何而來----把抽象的任務通過損失函數量化出來
2.了解參數總量,即知道每一層的設計才能退出---層設計決定參數總量

1.1 nn.model自帶的方法

#1.
#  nn.Module 的內置功能,直接輸出模型結構
print(model)#2.
# nn.Module 的內置功能,返回模型的可訓練參數迭代器
for name, param in model.named_parameters():print(f"Parameter name: {name}, Shape: {param.shape}")#3.
# 提取權重數據
import numpy as np
weight_data = {}
for name, param in model.named_parameters():if 'weight' in name:weight_data[name] = param.detach().cpu().numpy()# 可視化權重分布
fig, axes = plt.subplots(1, len(weight_data), figsize=(15, 5))
fig.suptitle('Weight Distribution of Layers')for i, (name, weights) in enumerate(weight_data.items()):# 展平權重張量為一維數組weights_flat = weights.flatten()# 繪制直方圖axes[i].hist(weights_flat, bins=50, alpha=0.7)axes[i].set_title(name)axes[i].set_xlabel('Weight Value')axes[i].set_ylabel('Frequency')axes[i].grid(True, linestyle='--', alpha=0.7)plt.tight_layout()
plt.subplots_adjust(top=0.85)
plt.show()
# 計算并打印每層權重的統計信息
print("\n=== 權重統計信息 ===")
for name, weights in weight_data.items():mean = np.mean(weights)std = np.std(weights)min_val = np.min(weights)max_val = np.max(weights)print(f"{name}:")print(f"  均值: {mean:.6f}")print(f"  標準差: {std:.6f}")print(f"  最小值: {min_val:.6f}")print(f"  最大值: {max_val:.6f}")print("-" * 30)
from torchsummary import summary
# 打印模型摘要,可以放置在模型定義后面
summary(model, input_size=(4,))

該方法不顯示輸入層的尺寸,因為輸入的神經網是自己設置的,所以不需要顯示輸入層的尺寸。 但是在使用該方法時,input_size=(4,) 參數是必需的,因為 PyTorch 需要知道輸入數據的形狀才能推斷模型各層的輸出形狀和參數數量。

summary 函數的核心邏輯是:

創建一個與 input_size 形狀匹配的虛擬輸入張量(通常填充零)
將虛擬輸入傳遞給模型,執行一次前向傳播(但不計算梯度)
記錄每一層的輸入和輸出形狀,以及參數數量
生成可讀的摘要報告

from torchinfo import summary
summary(model, input_size=(4, ))

torchinfo 是提供比 torchsummary 更詳細的模型摘要信息,包括每層的輸入輸出形狀、參數數量、計算量等

from tqdm import tqdm  # 先導入tqdm庫
import time  # 用于模擬耗時操作# 創建一個總步數為10的進度條
with tqdm(total=10) as pbar:  # pbar是進度條對象的變量名# pbar 是 progress bar(進度條)的縮寫,約定俗成的命名習慣。for i in range(10):  # 循環10次(對應進度條的10步)time.sleep(0.5)  # 模擬每次循環耗時0.5秒pbar.update(1)  # 每次循環后,進度條前進1步
# 在測試集上評估模型,此時model內部已經是訓練好的參數了
# 評估模型
model.eval() # 設置模型為評估模式
with torch.no_grad(): # torch.no_grad()的作用是禁用梯度計算,可以提高模型推理速度outputs = model(X_test)  # 對測試數據進行前向傳播,獲得預測結果_, predicted = torch.max(outputs, 1) # torch.max(outputs, 1)返回每行的最大值和對應的索引#這個函數返回2個值,分別是最大值和對應索引,參數1是在第1維度(行)上找最大值,_ 是Python的約定,表示忽略這個返回值,所以這個寫法是找到每一行最大值的下標# 此時outputs是一個tensor,p每一行是一個樣本,每一行有3個值,分別是屬于3個類別的概率,取最大值的下標就是預測的類別# predicted == y_test判斷預測值和真實值是否相等,返回一個tensor,1表示相等,0表示不等,然后求和,再除以y_test.size(0)得到準確率# 因為這個時候數據是tensor,所以需要用item()方法將tensor轉化為Python的標量# 之所以不用sklearn的accuracy_score函數,是因為這個函數是在CPU上運行的,需要將數據轉移到CPU上,這樣會慢一些# size(0)獲取第0維的長度,即樣本數量correct = (predicted == y_test).sum().item() # 計算預測正確的樣本數accuracy = correct / y_test.size(0)print(f'測試集準確率: {accuracy * 100:.2f}%')

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

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

相關文章

【如何在IntelliJ IDEA中新建Spring Boot項目(基于JDK 21 + Maven)】

AA. 我的開發環境配置與核心工具鏈解析 一、開發環境全覽 C:\Users\Again>java -version java version "21.0.1" 2023-10-17 LTS Java(TM) SE Runtime Environment (build 21.0.112-LTS-29) Java HotSpot(TM) 64-Bit Server VM (build 21.0.112-LTS-29, mixed m…

【C++高級主題】多重繼承下的類作用域

目錄 一、類作用域與名字查找規則:理解二義性的根源 1.1 類作用域的基本概念 1.2 單繼承的名字查找流程 1.3 多重繼承的名字查找特殊性 1.4 關鍵規則:“最近” 作用域優先,但多重繼承無 “最近” 二、多重繼承二義性的典型類型與代碼示…

登錄vmware vcenter報vSphere Client service has stopped working錯誤

一、問題 登錄vmware vcenter時發現報vSphere Client service has stopped working錯誤,導致vcenter控制臺進不去 二、解決辦法 打開vmware vcenter管理https://vcenterIP:5480,選擇VMware vSphere Client,重啟該服務后恢復正常。

MySQL關系型數據庫學習

學習參考鏈接:https://www.runoob.com/mysql/mysql-tutorial.html Windows 安裝MYSQL服務端的步驟:https://www.runoob.com/w3cnote/windows10-mysql-installer.html 1. 概念學習 MySQL 是一種關聯數據庫管理系統,關聯數據庫將數據保存在不…

web攻防之SSTI 注入漏洞

知識簡介 : 模版引擎和框架的區別 ssti的中文翻譯 : 服務端的模版的注入 模版引擎 :前端的用于裝飾優化html的模版 最簡單的就是在騰訊會議中的聊天功能 框架 : 這個是一套獨立存在的邏輯 如TP他是一個區別于php語法的后端邏輯…

【清晰教程】利用Git工具將本地項目push上傳至GitHub倉庫中

Git 是一個分布式版本控制系統,由 Linus Torvalds 創建,用于有效、高速地處理從小到大的項目版本管理。GitHub 是一個基于 Git 的代碼托管平臺,提供了額外的協作和社交功能,使項目管理更加高效。它們為項目代碼管理、團隊協作和持…

極簡以太彩光網絡解決方案4.0正式發布,“彩光”重構園區網絡極簡之道

5月28日下午,銳捷網絡在京舉辦以“光,本該如此‘簡單’”為主題的發布會,正式發布極簡以太彩光網絡解決方案4.0。作為“彩光”方案的全新進化版本,極簡以太彩光4.0從用戶需求出發,聚焦場景洞察,開啟了一場從底層基因出發的極簡革命,通過架構、部署、運維等多維度的創新升級,以強…

Selenium 中 JavaScript 點擊的優勢及使用場景

*在 Selenium 自動化測試中,使用 JavaScript 執行點擊操作(如driver.execute_script("arguments[0].click();", element))相比直接調用element.click()有以下幾個主要優勢: 1. 繞過元素不可點擊的限制 問題場景&#x…

CppCon 2014 學習:Cross platform GUID association with types

類型的 GUID(全局唯一標識符) 是在 COM 編程(Component Object Model) 和某些大型 C 架構(如 Office、DirectX、跨 DLL 接口)中關聯類型信息和實現運行時類型識別與動態接口查詢的重要機制。 下面我們分層解…

Android 11以上App主動連接WIFI的完整方案

早期Android版本App內連接指定的WIFI還是比較簡單的,但是隨著Android版本的提升,限制也越來越多。以下是一套完整的Android 11以上的WIFI應用內主動連接方案。 第一步:添加到建議連接: val wifiManager getSystemService(WIFI_…

讓AI彈琴作曲不再是夢:Python+深度學習玩轉自動化音樂創作

讓AI彈琴作曲不再是夢:Python+深度學習玩轉自動化音樂創作 一、AI也能譜出動人的旋律?真不是科幻! 還記得小時候學鋼琴時老師的那句經典:“感覺不到情緒的樂句,是沒靈魂的。” 當時我一邊練琴一邊想:要是有個機器能幫我寫譜、調性又不跑調就好了! 結果幾年后,真被我碰…

機器學習:集成學習概念、分類、隨機森林

本文目錄: 一、集成學習概念**核心思想:** 二、集成學習分類(一)Bagging集成(二)Boosting集成(三)兩種集成方法對比 三、隨機森林 一、集成學習概念 集成學習是一種通過結合多個基學習器&#…

YOLO機械臂丨使用unity搭建仿真環境,YOLO算法識別,Moveit2控制

文章目錄 前言搭建開發環境在window中安裝Unity創建Docker容器,并安裝相關軟件運行測試改進添加刪除節點前的函數調用 報錯?框選節點的時候報錯?如果無法控制機械臂,查看rviz2的終端,應該會有?規劃路徑超出范圍 參考 前言 本項目介紹通過…

Docker 插件生態:從網絡插件到存儲插件的擴展能力解析

Docker 容器技術以其輕量、快速、可移植的特性,迅速成為構建和部署現代應用的核心工具。然而,盡管 Docker Engine 自身功能強大,但在面對多樣化的生產環境和復雜業務需求時,僅靠核心功能往往無法滿足所有場景。 例如,跨主機的容器網絡通信、異構存儲系統的持久化數據管理…

飛牛fnNAS使用群輝DSM系統

目錄 一、Virtual DSM簡介 二、在飛牛NAS中安裝 1、激活Docker 2、建立路徑 3、創建Compose項目 4、容器啟動 (1)構建容器 (2)容器啟動 5、查看日志 6、登錄DSM地址 7、安裝完成 8、安裝套件示例 9、遠程訪問 10、測試 (1)PC瀏覽器創建筆記 (2)手機創建…

關于FPGA軟核的仿真(一)

MicroBlaze是Xilinx專為FPGA設計的軟核處理器,其本質是通過FPGA的可編程邏輯資源(如查找表LUT、觸發器Flip-Flop)動態構建的處理器架構,其本質為搭建處理器電路。MicroBlaze上運行嵌入式C代碼程序,通過CoreConnect總線…

戶外攝像頭監控如何兼顧安全實時監控

一、技術手段提升隱私安全性 硬件與功能設計 采用支持隱私保護技術的設備,例如帶電子開關的攝像頭(可遠程控制攝像頭啟閉)3,或搭載本地AI算法的設備,僅識別人形、車輛等目標,減少無關信息采集。 使用安全…

【C#朗讀文本DLL動態按鈕控件組及按鈕事件文本框拖放數據】2022-1-21

緣由https://bbs.csdn.net/topics/604357098 DotNetSpeech.dll下載_DotNetSpeech.dll免費版下載 - 系統之家 dotnetspeech.dll 64下載-dotnetspeech.dll下載 v10.2 官方版-IT貓撲網 下載了一個DotNetSpeech.dll,放到 \bin\Debug里,添加引用,…

<5>, Qt系統相關

目錄 一、Qt 事件 1,事件的定義 2,事件的處理 3,鼠標事件 4,按鍵事件 5,定時器 6,事件分發器 7,事件過濾器 二、Qt 文件 1,輸入輸出類 2,文件讀寫類 3&#x…

WordPress主題代碼優化深度指南

引言:為何主題優化至關重要 WordPress作為全球最流行的內容管理系統,其性能表現直接關系到用戶體驗和網站成功。主題代碼優化不僅能夠: 提升頁面加載速度(Google研究表明,頁面加載時間每增加1秒,跳出率增加…