小白的進階之路系列之六----人工智能從初步到精通pytorch數據集與數據加載器

本文將介紹以下內容:

數據集與數據加載器

數據遷移

如何建立神經網絡

數據集與數據加載器

處理數據樣本的代碼可能會變得混亂且難以維護;理想情況下,我們希望我們的數據集代碼與模型訓練代碼解耦,以獲得更好的可讀性和模塊化。PyTorch提供了兩個數據原語:torch.utils.data.DataLoader和torch.utils.data.Dataset,它們允許你使用預加載的數據集和你自己的數據。Dataset存儲了樣本及其相應的標簽,DataLoader在Dataset周圍包裝了一個可迭代對象,以便于訪問樣本。

PyTorch域庫提供了許多預加載的數據集(如FashionMNIST),這些數據集是torch.utils.data.Dataset的子類,并實現了特定數據的特定函數。它們可用于原型化和基準化模型。你可以在這里找到它們:圖像數據集,文本數據集和音頻數據集

加載數據集

下面是一個如何從TorchVision加載Fashion-MNIST數據集的示例。Fashion-MNIST是Zalando文章圖像的數據集,由60,000個訓練樣例和10,000個測試樣例組成。每個示例都包含一個28×28灰度圖像和來自10個類之一的關聯標簽。

我們用以下參數加載FashionMNIST數據集:

  • root是存儲訓練/測試數據的路徑,

  • Train指定訓練或測試數據集,

  • download=True從互聯網上下載數據,如果它在根不可用。

  • Transform和target_transform指定特征和標簽轉換

import torch
from torch.utils.data import Dataset
from torchvision import datasets
from torchvision.transforms import ToTensor
import matplotlib.pyplot as plttraining_data = datasets.FashionMNIST(root="data",train=True,download=True,transform=ToTensor()
)test_data = datasets.FashionMNIST(root="data",train=False,download=True,transform=ToTensor()
)

迭代和可視化數據集

我們可以像列表一樣手動索引數據集:training_data[index]。我們使用matplotlib來可視化訓練數據中的一些樣本。

labels_map = {0: "T-Shirt",1: "Trouser",2: "Pullover",3: "Dress",4: "Coat",5: "Sandal",6: "Shirt",7: "Sneaker",8: "Bag",9: "Ankle Boot",
}
figure = plt.figure(figsize=(8, 8))
cols, rows = 3, 3
for i in range(1, cols * rows + 1):sample_idx = torch.randint(len(training_data), size=(1,)).item()img, label = training_data[sample_idx]figure.add_subplot(rows, cols, i)plt.title(labels_map[label])plt.axis("off")plt.imshow(img.squeeze(), cmap="gray")
plt.show()

輸出為:

在這里插入圖片描述

為文件創建自定義數據集

自定義Dataset類必須實現三個函數:initlen__和__getitem。看看這個實現;FashionMNIST圖像存儲在目錄img_dir中,它們的標簽單獨存儲在CSV文件annotations_file中。

在接下來的部分中,我們將分解這些函數中發生的事情。

class CustomImageDataset(Dataset):def __init__(self, annotations_file, img_dir, transform=None, target_transform=None):self.img_labels = pd.read_csv(annotations_file)self.img_dir = img_dirself.transform = transformself.target_transform = target_transformdef __len__(self):return len(self.img_labels)def __getitem__(self, idx):img_path = os.path.join(self.img_dir, self.img_labels.iloc[idx, 0])image = read_image(img_path)label = self.img_labels.iloc[idx, 1]if self.transform:image = self.transform(image)if self.target_transform:label = self.target_transform(label)return image, label

init

__init__函數在實例化Dataset對象時運行一次。我們初始化包含圖像、注釋文件和兩個轉換(下一節將詳細介紹)的目錄。

def __init__(self, annotations_file, img_dir, transform=None, target_transform=None):self.img_labels = pd.read_csv(annotations_file

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

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

相關文章

深入理解設計模式之中介者模式

深入理解設計模式之:中介者模式(Mediator Pattern) 一、什么是中介者模式? 中介者模式(Mediator Pattern)是一種行為型設計模式。它通過引入一個中介對象,來封裝一組對象之間的交互&#xff0…

基于通義千問的兒童陪伴學習和成長的智能應用架構。

1.整體架構概覽 我們的兒童聊天助手將采用典型的語音交互系統架構,結合大模型能力和外部知識庫: 2. 技術方案分解 2.1. 前端應用/設備 選擇: 移動App(iOS/Android)、Web應用,或者集成到智能音箱/平板等硬件設備中。技術棧: 移動App: React Native / Flutter (跨平臺…

Python Day40

Task: 1.彩色和灰度圖片測試和訓練的規范寫法:封裝在函數中 2.展平操作:除第一個維度batchsize外全部展平 3.dropout操作:訓練階段隨機丟棄神經元,測試階段eval模式關閉dropout 作業:仔細學習下測試和訓練代…

WordPress_suretriggers 權限繞過漏洞復現(CVE-2025-3102)

免責申明: 本文所描述的漏洞及其復現步驟僅供網絡安全研究與教育目的使用。任何人不得將本文提供的信息用于非法目的或未經授權的系統測試。作者不對任何由于使用本文信息而導致的直接或間接損害承擔責任。如涉及侵權,請及時與我們聯系,我們將盡快處理并刪除相關內容。 前…

基于Spring Boot 電商書城平臺系統設計與實現(源碼+文檔+部署講解)

技術范圍:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

LeetCode 39.組合總和:回溯法與剪枝優化的完美結合

一、問題本質與形式化定義 1.1 題目形式化描述 輸入:無重復整數數組candidates、目標值target輸出:所有和為target的組合集合,滿足: 元素可重復使用組合內元素非降序(避免重復解)解集無重復組合 1.2 問…

windows11安裝編譯QtMvvm

windows11安裝編譯QtMvvm 1 從github下載代碼2 官方的Download/Installtion3 自行構建編譯QtMvvm遇到的問題3.1 `qmake`問題執行命令報錯原因分析qmake報錯:找不到編譯器 cl解決方案3.2 `make qmake_all`問題執行命令報錯原因分析make命令未識別解決方案3.3 缺少`perl`問題執行…

unix/linux source 命令,其歷史爭議、兼容性、生態、未來展望

現在把目光投向unix/linux source命令的歷史爭議、兼容性、生態和未來展望,這能讓我們更全面地理解一個技術點在更廣闊的圖景中所處的位置。 一、歷史爭議與設計權衡 雖然 source (或 .) 命令功能強大且不可或缺,但在其發展和使用過程中,也存在一些微妙的爭議或設計上的權衡…

開發時如何通過Service暴露應用?ClusterIP、NodePort和LoadBalancer類型的使用場景分別是什么?

一、Service核心概念 Service通過標簽選擇器(Label Selector)關聯Pod,為動態變化的Pod集合提供穩定的虛擬IP和DNS名稱,主要解決: 服務發現負載均衡流量路由 二、Service類型詳解 1. ClusterIP(默認類型…

從線性代數到線性回歸——機器學習視角

真正不懂數學就能理解機器學習其實是個神話。我認為,AI 在商業世界可以不懂數學甚至不懂編程也能應用,但對于技術人員來說,一些基礎數學是必須的。本文收集了我認為理解學習本質所必需的數學基礎,至少在概念層面要掌握。畢竟&…

華為IP(7)

端口隔離技術 產生的背景 1.以太交換網絡中為了實現報文之間的二層隔離,用戶通常將不同的端口加入不同的VLAN,實現二層廣播域的隔離。 2.大型網絡中,業務需求種類繁多,只通過VLAN實現二層隔離,會浪費有限的VLAN資源…

Docker Desktop無法在windows低版本進行安裝

問題描述 因工作需要,現在一臺低版本的window系統進行Docker Desktop的安裝,但是安裝過程當中出現了報錯信息 系統版本配置 原因分析: 關于本機查看了系統的版本號,版本號如下為1909,但是docker Desktop要求的最低的win10版本…

深入理解 Maven 循環依賴問題及其解決方案

在 Java 開發領域,Maven 作為主流構建工具極大簡化了依賴管理和項目構建。然而**循環依賴(circular dependency)**問題仍是常見挑戰,輕則導致構建失敗,重則引發類加載異常和系統架構混亂。 本文將從根源分析循環依賴的…

Git 全平臺安裝指南:從 Linux 到 Windows 的詳細教程

目錄 一、Git 簡介 二、Linux 系統安裝指南 1、CentOS/RHEL 系統安裝 2、Ubuntu/Debian 系統安裝 3、Windows 系統安裝 四、安裝后配置(后面會詳細講解,現在了解即可) 五、視頻教程參考 一、Git 簡介 Git 是一個開源的分布式版本控制系…

微服務-Sentinel

目錄 背景 Sentinel使用 Sentinel控制臺 Sentinel控制規則 Sentinel整合OpenFeign 背景 在微服務項目架構中,存在多個服務相互調用場景,在某些情況下某個微服務不可用時,上游調用者若一直等待,會產生資源的消耗,極端情…

智慧零工平臺前端開發實戰:從uni-app到跨平臺應用

智慧零工平臺前端開發實戰:從uni-app到跨平臺應用 本文將詳細介紹我如何使用uni-app框架開發一個支持微信小程序和H5的零工平臺前端應用,包含技術選型、架構設計、核心功能實現及部署經驗。 前言 在當今移動互聯網時代,跨平臺開發已成為提高開發效率的重要手段。本次我選擇…

Qt實現csv文件按行讀取的方式

Qt實現csv文件按行讀取的方式 場景:我有一個保存數據的csv文件,文件內保存的是按照行保存的數據,每行數據是以逗號為分隔符分割的文本數據。如下圖所示: 現在,我需要按行把這些數據讀取出來。 一、使用QTextStream文本流的方式讀取 #include <QFile>void readfil…

day17 leetcode-hot100-34(鏈表13)

23. 合并 K 個升序鏈表 - 力扣&#xff08;LeetCode&#xff09; 1.數組排序 思路 &#xff08;1&#xff09;將全部的節點存儲到數組中 &#xff08;2&#xff09;對數組進行排序 &#xff08;3&#xff09;最后創建一個全新的鏈表 具體代碼 /*** Definition for singly…

docker運行程序Killed異常排查

問題描述 我最近開發了一個C 多線程程序&#xff0c;測試沒有問題&#xff0c;封裝docker測試也沒有問題&#xff0c;然后提交給客戶了&#xff0c;然后在他那邊測試有問題&#xff0c;不定時、不定位置異常中斷&#xff0c;以前一直認為只要封裝了docker就萬事大吉&#xff0…

爬蟲的幾種方式(使用什么技術來進行一個爬取數據)

在網頁數據爬取中&#xff0c;確實存在多種數據呈現和獲取形式&#xff0c;遠不止靜態HTML解析和簡單JS渲染。理解這些形式對于應對不同的反爬機制至關重要&#xff1a; 主要數據獲取形式與應對策略 純靜態HTML (基礎形式) 特點&#xff1a; 數據直接嵌入在服務器返回的初始HT…