深度學習3.5 圖像分類數據集

%matplotlib inline
import torch
import torchvision
from torch.utils import data
from torchvision import transforms
from d2l import torch as d2l

代碼執行流程圖

下載FashionMNIST數據集
定義標簽轉換函數
構建數據加載器
可視化第一批次圖像
配置批量加載參數
測試數據加載速度
動態調整圖像尺寸
驗證調整后的數據形狀

3.5.1 讀取數據集

trans = transforms.ToTensor()
mnist_train = torchvision.datasets.FashionMNIST(root="../data", train=True, transform=trans, download=True)
mnist_test = torchvision.datasets.FashionMNIST(root="../data", train=False, transform=trans, download=True)

下載并加載FashionMNIST數據集
?關鍵參數?:
transform=trans:將圖像轉換為張量(形狀 [1, 28, 28],值域 [0,1])。
download=True:若本地無數據則自動下載。
?數據集結構?:
訓練集:60,000 張 28x28 灰度圖像。
測試集:10,000 張 28x28 灰度圖像。

def get_fashion_mnist_labels(labels):text_labels = ['t-shirt', 'trouser', 'pullover', 'dress', 'coat', 'sandal', 'shirt', 'sneaker', 'bag', 'ankle boot']return [text_labels[int(i)] for i in labels]

標簽映射
將數字標簽(0-9)轉換為可讀的文本標簽(如 0 → ‘t-shirt’)。

def show_images(imgs, num_rows, num_cols, titles=None, scale=1.5):figsize = (num_cols * scale, num_rows * scale)_, axes = d2l.plt.subplots(num_rows, num_cols, figsize=figsize)axes = axes.flatten()for i, (ax, img) in enumerate(zip(axes, imgs)):if torch.is_tensor(img):ax.imshow(img.numpy())else:ax.imshow(img)ax.axes.get_xaxis().set_visible(False)ax.axes.get_yaxis().set_visible(False)if titles:ax.set_title(titles[i])return axes

輸入 imgs 可以是張量或PIL圖像。
squeeze():移除單通道維度(1x28x28 → 28x28),否則 imshow 可能報錯。
cmap=‘gray’:確保灰度圖正確顯示(默認可能為彩色)。

X, y = next(iter(data.DataLoader(mnist_train, batch_size=18)))
show_images(X.reshape(18, 28, 28), 2, 9, titles=get_fashion_mnist_labels(y));

?輸出?:顯示 2行x9列 的圖像網格,標題為對應的文本標簽。
X.reshape(18, 28, 28):調整形狀以匹配 imshow 的輸入要求(原始形狀為 18x1x28x28)。

在這里插入圖片描述

3.5.2 讀取小批量

batch_size = 256def get_dataloader_workers():return 4  # 根據CPU核心數調整(通常設為4-8)train_iter = data.DataLoader(mnist_train, batch_size, shuffle=True, num_workers=get_dataloader_workers())

shuffle=True:打亂訓練數據順序,避免模型記憶批次。
num_workers=4:啟用4個進程并行加載數據,加速數據讀取。

timer = d2l.Timer()
for X, y in train_iter:continue
print(f'加載時間:{timer.stop():.2f} sec')

‘2.30 sec’

3.5.3 整合所有組件

def load_data_fashion_mnist(batch_size, resize=None):trans = [transforms.ToTensor()]if resize:trans.insert(0, transforms.Resize(resize)) # Resize必須在ToTensor前trans = transforms.Compose(trans)mnist_train = torchvision.datasets.FashionMNIST(root="../data", train=True, transform=trans, download=True)mnist_test = torchvision.datasets.FashionMNIST(root="../data", train=False, transform=trans, download=True)return (data.DataLoader(mnist_train, batch_size, shuffle=True,num_workers=get_dataloader_workers()),data.DataLoader(mnist_test, batch_size, shuffle=False,num_workers=get_dataloader_workers()))

?功能擴展?:支持調整圖像尺寸(如 resize=64 將圖像縮放為 64x64)。
?預處理順序?:
Resize(若指定)
ToTensor(轉為張量并歸一化)

train_iter, test_iter = load_data_fashion_mnist(32, resize=64)
for X, y in train_iter:print(f'X形狀: {X.shape}, 數據類型: {X.dtype}')  # 輸出如 torch.Size([32,1,64,64])print(f'y形狀: {y.shape}, 數據類型: {y.dtype}')  # 輸出如 torch.int64break

X形狀: torch.Size([32, 1, 64, 64]), 數據類型: torch.float32
y形狀: torch.Size([32]), 數據類型: torch.int64

X.shape = [batch_size, channels, height, width]
y 為標簽張量,形狀 [batch_size]

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

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

相關文章

Kotlin集合全解析:List和Map高頻操作手冊

Kotlin 中 Map 和 List 常用功能總結 List 常用功能 創建 List val immutableList listOf(1, 2, 3) // 不可變列表 val mutableList mutableListOf("a", "b", "c") // 可變列表 val emptyList emptyList<String>() // 空列表基本…

Yocto項目實戰教程-第7章定制鏡像菜譜與內核菜譜-7.2小節-定制應用程序

&#x1f50d; B站相應的視頻教程&#xff1a; &#x1f4cc; Yocto項目實戰教程-第7章-定制鏡像菜譜與內核菜譜 記得三連&#xff0c;標為原始粉絲,感謝大神支持。 在嵌入式Linux系統開發中&#xff0c;定制專屬應用程序往往是最貼近產品交付的那一環。而Yocto項目&#xff0c…

【圖像輪廓特征查找】圖像處理(OpenCV) -part8

17 圖像輪廓特征查找 圖像輪廓特征查找其實就是他的外接輪廓。 應用&#xff1a; 圖像分割 形狀分析 物體檢測與識別 根據輪廓點進行&#xff0c;所以要先找到輪廓。 先灰度化、二值化。目標物體白色&#xff0c;非目標物體黑色&#xff0c;選擇合適的兒值化方式。 有了輪…

C# 的 字符串插值($) 和 逐字字符串(@) 功能

這段代碼使用了 C# 的 字符串插值&#xff08;$&#xff09; 和 逐字字符串&#xff08;&#xff09; 功能&#xff0c;并在 SQL 語句中動態拼接變量。下面詳細解釋它們的用法&#xff1a; 1. $&#xff08;字符串插值&#xff09; $ 是 C# 的 字符串插值 符號&#xff0c;允許…

mockMvc構建web單元測試學習筆記

web應用本來需要依靠tomcat這個環境運行 現在用mockMvc是為了模擬這個web環境&#xff0c;簡化測試 什么是mock(模擬) 模擬對象---mock object是以可控方式模擬真實對象行為的假對象&#xff0c;通過模擬輸入數據&#xff0c;驗證程序達到預期結果 為什么使用mock對象 因為…

6.7.圖的深度優先遍歷(英文縮寫DFS)

樹是特殊的圖&#xff0c;沒有回路的圖就是樹 BFS與DFS的區別在于&#xff0c;BFS使用了隊列&#xff0c;DFS使用了棧 一.深度優先遍歷&#xff1a; 1.樹的深度優先遍歷&#xff1a; 樹的深度優先遍歷分為先根遍歷和后根遍歷。 以樹的先根遍歷為例&#xff1a; 上述圖片里…

VOS3000內存滿了怎么刪除,錄音格式如何轉換呢

一、清理VOS3000內存&#xff08;刪除舊錄音文件&#xff09; 定位錄音存儲目錄 通常錄音文件存儲在以下路徑&#xff08;以實際配置為準&#xff09;&#xff1a; bash 復制 下載 /usr/local/vos/record # 默認錄音目錄 /var/log/vos/logs # 系統日志目錄&#xff08;…

【圖問答】DeepSeek-VL 論文閱讀筆記

《DeepSeek-VL: Towards Real-World Vision-Language Understanding》 1. 摘要/引言 基于圖片問答&#xff08;Visual Question Answering&#xff0c;VQA&#xff09;的任務 2. 模型結構 和 三段式訓練 1&#xff09;使用 SigLIP 和 SAM 作為混合的vision encoder&#xf…

MATLAB - 模型預測控制(MPC)使用 ADMM 求解器四分之一汽車懸架懸掛系統動力學控制

系列文章目錄 目錄 系列文章目錄 前言 一、四分車懸架模型 二、道路干擾剖面 三、設計模型預測控制器 四、設置優化求解器 五、輔助函數 前言 本例展示了如何為四分之一汽車懸架系統設計模型預測控制器 (MPC)&#xff0c;采用乘法交替方向法 (ADMM) 求解器來控制主動懸架…

基于多模態融合算法的航空武器毀傷評估技術方案

基于多模態融合算法的航空武器毀傷評估技術方案 1. 引言 航空武器毀傷評估(Damage Assessment, DA)是現代戰爭中的關鍵環節,直接影響后續作戰決策。傳統的人工評估方式效率低、主觀性強,且在高強度戰場環境下難以實時完成。因此,本研究提出一種基于多模態融合算法的自動…

LeetCode算法題(Go語言實現)_49

題目 給定整數數組 nums 和整數 k&#xff0c;請返回數組中第 k 個最大的元素。 請注意&#xff0c;你需要找的是數組排序后的第 k 個最大的元素&#xff0c;而不是第 k 個不同的元素。 你必須設計并實現時間復雜度為 O(n) 的算法解決此問題。 一、代碼實現&#xff08;快速選擇…

【HCIA】簡易的兩個VLAN分別使用DHCP分配IP

前言 之前我們通過 靜態ip地址實現了Vlan間通信 &#xff0c;現在我們添加一個常用的DHCP功能。 文章目錄 前言1. 配置交換機2. 接口模式3. 全局模式后記修改記錄 1. 配置交換機 首先&#xff0c;使用DHCP&#xff0c;需要先啟動DHCP服務&#xff1a; [Huawei]dhcp enable I…

【技術派后端篇】技術派通用敏感詞替換:原理、實現與應用

在當今互聯網環境下&#xff0c;數據脫敏對于國內的互聯網企業而言已經成為一項標配。這不僅是為了滿足合規性要求&#xff0c;更是保障用戶信息安全和企業聲譽的重要舉措。本文將深入探討技術派中實現數據脫敏的關鍵技術——通用敏感詞替換&#xff0c;從算法原理到具體實現&a…

Android RK356X TVSettings USB調試開關

Android RK356X TVSettings USB調試開關 平臺概述操作-打開USB調試實現源碼補充說明 平臺 RK3568 Android 11 概述 RK3568 是瑞芯微&#xff08;Rockchip&#xff09;推出的一款高性能處理器&#xff0c;支持 USB OTG&#xff08;On-The-Go&#xff09;和 USB Host 功能。US…

Microsoft Edge for linux debian

下載地址 https://www.microsoft.com/en-us/edge/download?formMA13FJ 安裝 # 下載安裝包 wget https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_135.0.3179.85-1_amd64.deb?brandM102 # 安裝 sudo dpkg -i microsoft…

typedef MVS_API CLISTDEF0IDX(ViewScore, IIndex) ViewScoreArr;

查找 MVS_API 定義 我們沒有在 List.h 文件中找到 MVS_API 的定義。MVS_API 很可能在 MVS 庫的其他地方定義。一般來說&#xff0c;MVS_API 是控制 OpenMVS 庫導入導出的宏&#xff0c;通常會出現在 MVS 的頭文件中。為了回答這個問題&#xff0c;我可以提供 MVS 代碼中常見的…

5.4/Q1,GBD數據庫最新文章解讀

文章題目&#xff1a;The global burden of high BMI among adolescents between 1990 and 2021 DOI&#xff1a;10.1038/s43856-025-00838-2 中文標題&#xff1a;1990 年至 2021 年青少年高 BMI 的全球負擔 發表雜志&#xff1a;Commun Med 影響因子&#xff1a;1區&#xff…

【形式化驗證基礎】活躍屬性Liveness Property和安全性質(Safety Property)介紹

文章目錄 一、Liveness Property1、概念介紹2、形式化定義二、Safety Property1. 定義回顧2. 核心概念解析3. 為什么強調“有限前綴”4. 示例說明4.1 示例1:交通信號燈系統4.2 示例2:銀行賬戶管理系統5. 實際應用的意義三. 總結一、Liveness Property 1、概念介紹 在系統的…

Redis面試——常用命令

一、String &#xff08;1&#xff09;設置值相關命令 1.1.1 SET 功能&#xff1a;設置一個鍵值對&#xff0c;如果鍵已存在則覆蓋舊值語法&#xff1a; SET key value [EX seconds] [PX milliseconds] [NX|XX]EX seconds&#xff1a;設置鍵的過期時間為 seconds 秒 PX milli…

【Unity】使用Cinemachine+CharacterController實現第三人稱視角下的角色視角、移動和跳躍控制

1.初始配置 安裝Cinemachine插件給角色添加CharacterConroller創建Cinemachine-->Free Look Camera在Free Look Camera中調整參數&#xff0c;Y Axis勾選Inver&#xff0c;X Axis取消勾選InverFree Look Camera要看向角色 跟隨角色&#xff08;自行設置&#xff0c;我就不…