python打卡day39

圖像數據與顯存

知識點回顧

  1. 圖像數據的格式:灰度和彩色數據
  2. 模型的定義
  3. 顯存占用的4種地方
    1. 模型參數+梯度參數
    2. 優化器參數
    3. 數據批量所占顯存
    4. 神經元輸出中間狀態
  4. batchisize和訓練的關系

作業:今日代碼較少,理解內容即可

在 PyTorch 中,圖像數據的形狀通常遵循 (通道數, 高度, 寬度) 的格式(即 Channel First 格式),這與常見的 (高度, 寬度, 通道數)(Channel Last,如 NumPy 數組)不同。---注意順序關系,

注意點:

  1. 如果用matplotlib庫來畫圖,需要轉換下順序 image = np.transpose(image.numpy(), (1, 2, 0)
  2. 模型輸入通常需要批次維度(Batch Size),形狀變為 (批次大小, 通道數, 高度, 寬度)。例如,批量輸入 10 張 MNIST 圖像時,形狀為 (10, 1, 28, 28)

對于圖像數據集比如MNIST構建神經網絡來訓練的話,比起之前的結構化數據多了一個展平操作:

# 定義兩層MLP神經網絡
class MLP(nn.Module):def __init__(self, input_size=784, hidden_size=128, num_classes=10):super().__init__()self.flatten = nn.Flatten()  # 將28x28的圖像展平為784維向量self.layer1 = nn.Linear(input_size, hidden_size)  # 第一層:784個輸入,128個神經元self.relu = nn.ReLU()  # 激活函數self.layer2 = nn.Linear(hidden_size, num_classes)  # 第二層:128個輸入,10個輸出(對應10個數字類別)def forward(self, x):x = self.flatten(x)  # 展平圖像x = self.layer1(x)   # 第一層線性變換x = self.relu(x)     # 應用ReLU激活函數x = self.layer2(x)   # 第二層線性變換,輸出logitsreturn x# 初始化模型
model = MLP()

MLP的輸入層要求輸入是一維向量,但 MNIST 圖像是二維結構(28×28 像素),形狀為 [1, 28, 28](通道 × 高 × 寬)。nn.Flatten() 展平操作將二維圖像 “拉成” 一維向量(784=28×28 個元素),使其符合全連接層的輸入格式

在面對數據集過大的情況下,由于無法一次性將數據全部加入到顯存中,所以采取了分批次加載這種方式。所以實際應用中,輸入圖像還存在batch_size這一維度,但在PyTorch中,模型定義和輸入尺寸的指定不依賴于batch_size,無論設置多大的batch_size,模型結構和輸入尺寸的寫法都是不變的,batch_size是在數據加載階段定義的(之前提過這是DataLoader的參數)

那么顯存設置多少合適呢?如果設置的太小,那么每個batch_size的訓練不足以發揮顯卡的能力,浪費計算資源;如果設置的太大,會出現OOM(out of memory)顯存一般被以下內容占用:

  1. 模型參數與梯度:模型的權重和對應的梯度會占用顯存,尤其是深度神經網絡(如 Transformer、ResNet 等),一個 1 億參數的模型(如 BERT-base),單精度(float32)參數占用約 400MB(1e8×4Byte),加上梯度則翻倍至 800MB(每個權重參數都有其對應的梯度)
  2. 部分優化器(如 Adam)會為每個參數存儲動量(Momentum)和平方梯度(Square Gradient),進一步增加顯存占用(通常為參數大小的 2-3 倍)
  3. 其他開銷
  • 單張圖像尺寸:1×28×28(通道×高×寬),歸一化轉換為張量后為float32類型,顯存占用:1×28×28×4 Byte = 3,136 Byte ≈ 3 KB
  • 批量數據占用:batch_size × 單張圖像占用,例如batch_size=64時,數據占用為64×3 KB ≈ 192 KB

對于batch_size的設置,大規模數據時,通常從16開始測試,然后逐漸增加,確保代碼運行正常且不報錯,直到出現內存不足(OOM)報錯或訓練效果下降,此時選擇略小于該值的 batch_size。訓練時候搭配 nvidia-smi 監控顯存占用,合適的 batch_size = 硬件顯存允許的最大值 × 0.8(預留安全空間),并通過訓練效果驗證調整

@浙大疏錦行

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

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

相關文章

15.1 【基礎項目】使用 HTML、CSS 和 TypeScript 構建的簡單計數器應用

一個簡單的計數器應用是學習如何集成 HTML、CSS 和 TypeScript 的絕佳項目。該應用允許用戶對計數值進行增加、減少和重置,展示了 TypeScript 中基本的 DOM 操作和事件處理。 我們將構建的內容 我們將創建一個具有以下功能的計數器應用: 增加計數值減…

RT-Thread源碼閱讀(3)——內核對象管理

_object_container對象容器數組 在RT-Thread操作系統中&#xff0c;_object_container數組的作用是按類型分類管理內核對象&#xff0c;提供高效的類型檢查、資源管理和統計功能 struct rt_list_node {struct rt_list_node *next; /**< point to…

《智能醫學》征稿通知:7天可見刊,專科及以上可發表

香港科學出版社(Hong Kong Scientific Publishers Journals)是一家全球獨立高質量的學術出版機構&#xff0c;遵循國際開放獲取的出版(OA)原則。現已與科檢易學術攜手共同征集高質量文章。目前可出版來自高等學校、科研院所和企業的先進科技成果。包括理、工、農、醫、經、管、…

如何利用categraf的exec插件實現對Linux主機系統用戶及密碼有效期進行監控及告警?

需求描述 Categraf作為夜鶯監控平臺的數據采集工具&#xff0c;為了保障Linux主機的安全&#xff0c;需要實現對系統用戶密碼有效期的監控&#xff0c;并在密碼即將到期時及時告警&#xff0c;以提醒運維人員更改密碼。本章將詳細介紹如何利用Categraf的exec插件來實現這一功能…

RV1126-OPENCV 交叉編譯

一.下載opencv-3.4.16.zip到自己想裝的目錄下 二.解壓并且打開 opencv 目錄 先用 unzip opencv-3.4.16.zip 來解壓 opencv 的壓縮包&#xff0c;并且進入 opencv 目錄(cd opencv-3.4.16) 三. 修改 opencv 的 cmake 腳本的內容 先 cd platforms/linux 然后修改 arm-gnueabi.to…

如何加載私鑰為 SecKeyRef

本文介紹如何在 iOS/macOS 下將私鑰加載為 SecKeyRef&#xff0c;涵蓋 PEM 格式的 ECC 密鑰讀取、X9.63 數據構建、以及與 Keychain 的集成。 1. 使用 SecKeyCreateWithData 加載私鑰 Apple 提供的 SecKeyCreateWithData 方法可以直接將密鑰數據加載為 SecKeyRef 對象。 SecK…

Missashe考研日記—Day44-Day50

Missashe考研日記—Day44-Day50 寫在面前 本系列博客用于記錄博主一周的學習進度&#xff0c;具體知識總結在目前已有的筆記中&#xff1a;1.高數強化學習筆記2.計網復習筆記3.新增&#xff1a;線代題型總結 專業課408 這周先是把計網第三章數據鏈路層剩下的局域網以及之后…

Windows下安裝并使用kubectl查看K8S日志

【1】安裝kubectl 官網文檔&#xff1a;https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-windows/ 下載后得到 kubectl.exe&#xff0c;放到一個目錄下&#xff0c;然后配置環境變量。 此時CMD 進入DOS命令窗口 kubectl version【2】配置config文件 其實就是…

攻防世界János-the-Ripper

打開壓縮包是一個文件&#xff0c;用010Editor打開可以發現里面有隱藏文件flag.txt 此時想到分離文件&#xff0c;利用binwalk工具 利用binwalk生成出的是一個壓縮包&#xff0c;解壓縮但是發現竟然解壓需要密碼 這里就可以開始暴力破解密碼了&#xff0c;這里我用的是ARCHPR工…

XPlifeapp:高效打印,便捷生活

在數字化時代&#xff0c;雖然電子設備的使用越來越普遍&#xff0c;但打印的需求依然存在。無論是學生需要打印課表、資料&#xff0c;還是職場人士需要打印名片、報告&#xff0c;一個高效便捷的打印軟件都能大大提高工作效率。XPlifeapp就是這樣一款超級好用的手機打印軟件&…

【計算機網絡】第2章:應用層—Web and HTTP

目錄 一、Web 與 HTTP 二、總結 &#xff08;一&#xff09;Web 的定義與功能 &#xff08;二&#xff09;HTTP 協議的定義與功能 &#xff08;三&#xff09;HTTP 協議的核心機制 1. HTTP 請求與響應流程 2. HTTP 的連接類型 3. HTTP 的狀態碼 &#xff08;四&#xf…

如何實現 LRU 緩存:基于LinkedHashMap?

全文目錄&#xff1a; 開篇語前言1. LinkedHashMap 簡介1.1 LinkedHashMap 的構造方法 2. 基于 LinkedHashMap 實現 LRU 緩存2.1 設計思路2.2 實現步驟2.3 代碼說明2.4 測試案例2.5 解釋 3. LRU 緩存優化3.1 removeEldestEntry() 方法的靈活性3.2 內存管理 4. 總結文末 開篇語 …

Spring Boot測試框架全面解析

Spring Boot測試框架基礎 Spring Boot通過增強Spring測試框架的能力,為開發者提供了一系列簡化測試流程的新注解和特性。該框架建立在成熟的Spring測試基礎之上,通過自動化配置和專用注解顯著提升了測試效率。 核心依賴配置 要使用Spring Boot的全部測試功能,只需在項目中…

Spring Boot 整合 Spring Data JPA、strategy 的策略區別、什么是 Spring Data JPA

DAY29.2 Java核心基礎 Spring Boot 整合 Spring Data JPA Spring Data JPA根據具體的數據庫分為不同的子模塊&#xff0c;無論是關系型數據庫和非關系型數據庫&#xff0c;Spring Data都提供了支持 Mysql&#xff1a;Spring Data JPA Redis&#xff1a;Spring Data Redis …

Ubuntu 服務器配置與 Cloudflare Tunnel 部署指南 免費內網穿透家用服務器

Ubuntu 服務器配置與 Cloudflare Tunnel 部署指南 本文檔總結了服務器配置相關內容&#xff0c;包括 Ubuntu 服務器配置、硬盤擴容、靜態 IP 設置以及 Cloudflare Tunnel 的部署步驟。 目錄 硬盤分區與擴容設置靜態 IPCloudflare Tunnel 部署SSH 通過 Cloudflare Tunnel常見…

降低實驗檢測報告編制耗時 質檢LIMS系統的應用策略

在質檢工作流程中&#xff0c;檢測報告編制往往是耗時耗力的關鍵環節。傳統人工編制報告不僅效率低下&#xff0c;還容易出現數據錯誤、格式不統一等問題。質檢 LIMS 系統憑借其強大的自動化、智能化功能&#xff0c;為檢測報告編制帶來革命性變革&#xff0c;能夠將編制時間減…

同為.net/C#的跨平臺運行時的mono和.net Core有什么區別?

Mono 和 .NET Core&#xff08;現已統一為 .NET&#xff09;都是 .NET 生態的跨平臺實現&#xff0c;但它們在設計目標、技術特性和應用場景上有顯著區別。以下是詳細對比&#xff1a; ??1. 歷史背景?? ??項目????誕生時間????開發者????當前狀態????Mo…

Android AIDL Hal最低保證出現的問題

1. AIDL HAL 的“最低保證”特性 &#xff08;1&#xff09;協議層級的強制支持 在 IComposer AIDL 接口定義中&#xff08;如 android.hardware.graphics.composer3&#xff09;&#xff0c;Google 已經將部分功能列為 必須支持的特性&#xff08;MUST&#xff09;。例如&am…

蘋果FINDMY和谷歌FIND HUB增強共享位置功能

近期&#xff0c;蘋果Findmy增強了追蹤和分享丟失物品位置方面的功能&#xff0c;“共享物品位置”&#xff0c;用戶可以安全地與航空a公司等第三方分享丟失物品的位置&#xff0c;以便于行李找回。 iOS 18.2的這一新功能使用戶可以輕松、安全地與航空公司等第三方分享AirTag或…

基于GA遺傳優化的FIR濾波器幅頻相頻均衡補償算法matlab仿真

目錄 1.程序功能描述 2.測試軟件版本以及運行結果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 在數字信號處理領域&#xff0c;有限沖激響應&#xff08;FIR&#xff09;濾波器因其結構簡單、穩定性好且易于實現線性相位等優點被廣泛應用。然而&#xff0c;實…