【動手學深度學習】3.5. 圖像分類數據集


目錄

    • 3.5. 圖像分類數據集
      • 1)讀取數據集
      • 2)讀取小批量
      • 3)整合所有組件
      • 4)小結


.

3.5. 圖像分類數據集

我們將使用Fashion-MNIST數據集,作為圖像分類數據集。

%matplotlib inline
import torch
import torchvision
from torch.utils import data
from torchvision import transforms
from d2l import torch as d2ld2l.use_svg_display()

.

1)讀取數據集

可以通過框架中的內置函數將Fashion-MNIST數據集下載并讀取到內存中。

# 通過ToTensor實例將圖像數據從PIL類型變換成32位浮點數格式,
# 并除以255使得所有像素的數值均在0~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)

Fashion-MNIST由10個類別的圖像組成, 每個類別由訓練數據集(train dataset)中的6000張圖像 和測試數據集(test dataset)中的1000張圖像組成。

# 數據集大小
len(mnist_train), len(mnist_test)
# 輸出:(60000, 10000)# 數據集圖像尺寸
mnist_train[0][0].shape
# 輸出:torch.Size([1, 28, 28])# 數據集類別
def get_fashion_mnist_labels(labels):  #@save"""返回Fashion-MNIST數據集的文本標簽"""text_labels = ['t-shirt', 'trouser', 'pullover', 'dress', 'coat','sandal', 'shirt', 'sneaker', 'bag', 'ankle boot']return [text_labels[int(i)] for i in labels]

現在可以創建一個函數來可視化這些樣本。

def show_images(imgs, num_rows, num_cols, titles=None, scale=1.5):  #@save"""繪制圖像列表"""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:# PIL圖片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 axesX, 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)讀取小批量

通過內置數據迭代器,我們可以隨機打亂了所有樣本,從而無偏見地讀取小批量。

batch_size = 256def get_dataloader_workers():  #@save"""使用4個進程來讀取數據"""return 4train_iter = data.DataLoader(mnist_train, batch_size, shuffle=True,num_workers=get_dataloader_workers())

讀取訓練數據所需的時間。

timer = d2l.Timer()
for X, y in train_iter:continue
f'{timer.stop():.2f} sec'# 輸出:'3.37 sec'

.

3)整合所有組件

定義load_data_fashion_mnist函數,獲取Fashion-MNIST數據集,返回訓練集和驗證集的數據迭代器。 函數接受可選參數resize,用來將圖像大小調整為另一種形狀。

def load_data_fashion_mnist(batch_size, resize=None):  #@save"""下載Fashion-MNIST數據集,然后將其加載到內存中"""trans = [transforms.ToTensor()]if resize:trans.insert(0, transforms.Resize(resize))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參數來測試load_data_fashion_mnist函數的圖像大小調整功能。

train_iter, test_iter = load_data_fashion_mnist(32, resize=64)
for X, y in train_iter:print(X.shape, X.dtype, y.shape, y.dtype)break# 輸出:
torch.Size([32, 1, 64, 64]) torch.float32 torch.Size([32]) torch.int64

現在已經準備好使用Fashion-MNIST數據集,便于下面的章節調用來評估各種分類算法。

.

4)小結

  • Fashion-MNIST是一個服裝分類數據集,由10個類別的圖像組成。我們將在后續章節中使用此數據集來評估各種分類算法。

  • 我們將高度像素,寬度像素圖像的形狀記為或(,)。

  • 數據迭代器是獲得更高性能的關鍵組件。依靠實現良好的數據迭代器,利用高性能計算來避免減慢訓練過程。

.


聲明:資源可能存在第三方來源,若有侵權請聯系刪除!

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

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

相關文章

Python的格式化輸入輸出

# Python 的格式化輸出和格式化輸入## 格式化輸出Python 提供了多種字符串格式化的方法:### 1. % 格式化(舊式格式化)python name "Alice" age 25 print("Name: %s, Age: %d" % (name, age)) # 輸出: Name: Alice, Age…

day65—回溯—單詞搜索(LeetCode-79)

題目描述 給定一個 m x n 二維字符網格 board 和一個字符串單詞 word 。如果 word 存在于網格中,返回 true ;否則,返回 false 。 單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中“相鄰”單元格是那些水平相…

iOS安全和逆向系列教程 第19篇:ARM64匯編語言基礎與逆向分析

引言 在成功掌握iOS應用脫殼技術后,我們獲得了可以進行靜態分析的二進制文件。然而,要真正理解iOS應用的底層邏輯,我們必須深入到匯編語言層面。ARM64(也稱為AArch64)是蘋果在iPhone 5s及以后設備中使用的指令集架構。本篇文章將深入探討ARM64匯編語言的基礎知識,并結合…

使用Gitlab CI/CD結合docker容器實現自動化部署

Gitlab CI/CD基本介紹 核心概念 持續集成(CI):每次代碼提交后自動觸發構建、測試和代碼檢查,確保代碼質量 持續交付/部署(CD):在 CI 基礎上自動將代碼部署到測試或生產環境,支持人工…

初學者運行Pycharm程序可能會出現的問題,及解決辦法

文章目錄 前言一、ModuleNotFoundError: No module named sklearn二、ImportError: cannot import name show_config from numpy (unknown location)三、Pycharm報錯:“Original error was: DLL load failed: 找不到指定的模塊“ 的解決辦法四、ImportError: cannot…

Android開發中的Java與Kotlin:全面對比與深度解析

Android開發中的Java與Kotlin:全面對比與深度解析 在Android開發領域,Java和Kotlin是兩種主流編程語言。自Google在2017年宣布Kotlin為Android官方支持語言以來,Kotlin憑借其現代語法特性和與Java的無縫兼容性,逐漸成為開發者的新…

為應對激烈競爭環境,IBMS系統如何提升企業管理效率

IBMS智能管理系統:賦能企業高效運營,決勝競爭新時代 在瞬息萬變的商業環境中,效率就是競爭力!企業如何快速響應市場變化、優化內部流程、降低成本并實現精準決策?IBMS智能管理系統以創新科技為引擎,為企業…

2.3 ASPICE的架構與設計

在ASPICE中,架構與設計是汽車軟件開發過程中非常重要的一環,它涉及到定義和設計軟件系統的整體結構、組件以及其相互關系。良好的架構與設計可以幫助團隊更好地理解和管理軟件系統,提高系統的可維護性、可擴展性和性能。以下是ASPICE中架構與…

生益PCB耐高溫PCB板材怎么樣?

在5G基站晝夜不停地吞吐數據時,在新能源汽車電池管理系統經受極寒酷暑考驗時,在航空航天器穿越大氣層承受2000℃熱浪沖擊時,一塊優質PCB板材的“抗熱基因”正在決定著整個系統的生死存亡。生益科技研發的耐高溫PCB板材,正是在這場…

Java Spring ApplicationEvent 概述

一、Spring 事件機制核心概念 1. 事件驅動架構模型 發布-訂閱模式:解耦事件生產者和消費者觀察者模式:監聽器監聽特定事件事件驅動優勢: 組件間松耦合系統擴展性好支持異步處理事件溯源支持 2. 核心組件 組件作用實現方式ApplicationEve…

Spring核心框架完全指南 - 基礎知識全解析

?? 目錄 ?? Spring框架簡介 ??? IoC容器詳解 ?? 依賴注入(DI)深入理解 ?? Bean配置與管理 ?? Bean的作用域 ?? Bean生命周期 ?? 面向切面編程(AOP) ?? Spring注解詳解 ?? 資源管理 ?? 事件機制 ?? SpEL表達式語言 ?? 實戰案例 ?? 總…

Parasoft C++Test軟件集成測試(部件測試)_操作指南

系列文章目錄 Parasoft C++Test軟件靜態分析:操作指南(編碼規范、質量度量)、常見問題及處理 Parasoft C++Test軟件單元測試:操作指南、實例講解、常見問題及處理 Parasoft C++Test軟件集成測試:操作指南、實例講解、常見問題及處理 進階擴展:自動生成靜態分析文檔、自動…

聊一聊 Linux 上對函數進行 hook 的兩種方式

一:背景 1. 講故事 前兩篇我們介紹了 Minhook 在 Windows 平臺上的強大功效,這一篇我們來聊一聊如何在 Linux 上對函數進行hook,這里介紹兩種方式。 輕量級的 LD_PRELOAD 攔截 LD_PRELOAD是一種共享庫攔截,這種方式的優點在于…

【免費分享】GWO-BP-AdaBoost預測!灰狼優化、人工神經網絡與AdaBoost集成學習算法預測研究

一、模型組成原理 1. 灰狼優化算法(GWO) 核心思想:模擬灰狼群體的社會等級和狩獵行為(包圍、跟蹤、攻擊獵物),通過α、β、δ三級領導層引導種群搜索最優解。算法流程包括: 社會分層&#xff…

matlab實現非線性Granger因果檢驗

matlab程序包。用于格蘭杰因果分析,分析數據時,直接帶入數據即可。 hjt2/README , 1804 hjt2/c-code/Makefile , 57 hjt2/c-code/hjt2_tval.c , 10862 hjt2/matlab/spx_rp.dat , 175202 hjt2/matlab/spx_ur.dat , 174522 hjt2/matlab/spx_uv.dat , 1745…

從SQL Server到分布式大數據平臺:重構企業數據架構

在企業數字化加速的背景下,越來越多的組織開始意識到:傳統的數據系統正逐漸成為增長的“瓶頸”而非“助力”。其中,SQL Server 作為許多企業IT架構中曾經的中堅力量,正面臨前所未有的挑戰。它曾以穩定、易用、成本可控等優勢&…

【網關】互聯網公司的接入網關和業務網關怎么設計

網關 網關基礎知識 RGW全稱 Red GateWay :小紅書網關(網關英文:Gateway; 接入網關:Access Gateway) 網關(通用):Gateway 接入網關:API Gateway、Access Gateway 業務網關…

安全虛擬磁盤技術的創新與實踐

文章目錄 前言一、數據安全保護的新挑戰1. 數據安全態勢日益嚴峻,法律法規陸續出臺2. 加強數據安全管控成為銀行數據安全管理核心之一3. 銀行終端數據安全管控存在的難題 二、安全虛擬磁盤的探索與實踐1. 敏感文件的入盤及操作2. 敏感文件的流轉及出盤三、安全虛擬磁…

uni-app項目實戰筆記4--使用組件具名插槽slot定義公共標題模塊

先來看效果: 如圖,“每日推薦”,“專題精選”這些公共標題有相同的地方,也有自己的獨特的地方,像這類有共性又有個性的可考慮使用slot插槽來實現。 實現步驟: 1.在前面文章創建的公共組件common-title定義…

Appium + Java 測試全流程

??親愛的技術愛好者們,熱烈歡迎來到 Kant2048 的博客!我是 Thomas Kant,很開心能在CSDN上與你們相遇~?? 本博客的精華專欄: 【自動化測試】