淺談torch.utils.data.TensorDataset和torch.utils.data.DataLoader

1.torch.utils.data.TensorDataset

功能定位

torch.utils.data.TensorDataset 是一個將多個張量(Tensor)數據進行簡單包裝整合的數據集類,它主要的作用是將相關聯的數據(比如特征數據和對應的標簽數據等)組合在一起,形成一個方便后續用于訓練等操作的數據集對象。

例如,如果你有輸入特征數據 x(形狀為 [n_samples, feature_dim])和對應的標簽數據 y(形狀為 [n_samples]),且它們都是 torch.Tensor 類型,可以這樣創建 TensorDataset

import torch
from torch.utils.data import TensorDatasetx = torch.randn(100, 10)  # 模擬100個樣本,每個樣本特征維度為10
y = torch.randint(0, 2, (100,))  # 模擬二分類標簽dataset = TensorDataset(x, y)
特點
  • 簡單包裝:只是把傳入的張量按照樣本維度進行了對應組合,并沒有對數據做復雜的預處理、采樣等額外操作。

  • 索引支持:支持像普通列表那樣通過索引訪問其中的數據元素,例如 dataset[0] 會返回由對應索引的特征和標簽組成的元組(按照傳入構造函數的張量順序)。

  • 適用于小型數據集直接使用:當數據量不大且數據格式已經整理為張量形式時,可以直接基于它來進行簡單的模型訓練循環等操作,不過對于批量處理等更復雜的情況支持有限,需要進一步配合其他工具。

2.torch.utils.data.DataLoader

功能定位

torch.utils.data.DataLoader 是一個用于加載數據的工具類,它圍繞著給定的數據集(比如 TensorDataset 或者自定義的繼承自 Dataset 的類實例等),實現了諸如批量加載數據、打亂數據順序、并行加載數據等功能,旨在讓數據能夠以合適的方式、合適的批量大小等被送入到模型中進行訓練、驗證或測試等操作。

示例:

from torch.utils.data import DataLoaderbatch_size = 10
dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True)for batch_x, batch_y in dataloader:# 這里的batch_x和batch_y就是每次迭代取出的一個批量的特征和標簽數據pass
特點
  • 批量處理:可以按照設定的 batch_size 參數,將數據集中的數據劃分為一個個的小批量(mini-batch),方便模型以批量的方式進行梯度計算更新,有助于優化訓練過程和提升效率,尤其在大數據集場景下優勢明顯。

  • 數據打亂:通過設置 shuffle=True 可以在每個訓練輪次(epoch)開始時對數據集里面的數據順序進行隨機打亂,使得數據的輸入順序具有隨機性,這有助于提升模型訓練的泛化能力,避免模型因數據順序固定而產生過擬合等問題。

  • 并行加載:支持多進程加載數據(通過設置 num_workers 參數大于 0),能夠利用多核 CPU 的優勢加快數據讀取和預處理的速度,特別是在處理大規模數據集或者數據加載比較耗時的情況下,能顯著提升整體訓練效率。

  • 靈活性和通用性:它可以適配各種不同類型的數據集,只要這些數據集繼承自 torch.utils.data.Dataset 抽象類并實現了必要的 __len____getitem__ 等方法,因此無論是簡單的 TensorDataset 還是復雜的自定義數據集都可以用它來加載數據。

總的來說,TensorDataset 側重于對已有張量數據進行簡單的整合包裝形成數據集;而 DataLoader 側重于圍繞數據集實現數據的批量加載、打亂順序、并行化等復雜的數據加載相關功能,它們通常配合使用,先使用 TensorDataset 組織好數據,再通過 DataLoader 按照訓練需求來加載和處理這些數據并送入模型中。

from torch.utils.data import TensorDataset
from torch.utils.data import DataLoadertrain_ds = TensorDataset(x_train, y_train)
train_dl = DataLoader(train_ds, batch_size=bs, shuffle=True)valid_ds = TensorDataset(x_valid, y_valid)
valid_dl = DataLoader(valid_ds, batch_size=bs)

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

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

相關文章

【Go】運行自己的第一個Go程序

運行自己的第一個Go程序 一、Go語言的安裝Go環境安裝查看是否安裝成功配置GOPROXY(代理) 二、Goland安裝三、Goland破解四、新建項目 開一篇專欄記錄學習Go的過程,一門新語言從hello world開始,這篇文章詳細講解Go語言環境搭建及hello world實現 一、Go語…

計算機的錯誤計算(二百零一)

摘要 用兩個大模型計算 ,結果保留 10位有效數字。實驗表明,兩個大模型的輸出均只有1位正確數字;并它們幾乎相同:僅最后1位數字不同。 例1. 計算 , 結果保留 10位有效數字。 下面是與一個數學解題器的對話。 以上為與一個數學解…

下載excel

1.引入依賴 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.5</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-oo…

2024 年度時序數據庫 IoTDB 論文總結

論文成果總結 2024 年度&#xff0c;時序數據庫 IoTDB 在數據庫領域 CCF-A 類國際會議上共發表論文 8 篇&#xff0c;包括&#xff1a;SIGMOD 3 篇、VLDB 3 篇、ICDE 2 篇&#xff0c;涵蓋存儲、引擎、查詢、分析等方面。 2024 最后一天&#xff0c;我們將分類盤點 IoTDB 本年的…

ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32‘ not found

這個問題之前遇到過&#xff0c;沒有記錄&#xff0c;導致今天又花了2小時 原因是沒有GLIBC——2.32 使用以下命令查一下有哪些版本&#xff1a; strings /lib/x86_64-linux-gnu/libm.so.6 | grep GLIBC_ 我已經安裝好了&#xff0c;所有有2.32版本 原因是當前的ubuntu版本…

海南省大數據發展中心:數據資產場景化評估案例手冊(第二期)

2025年1月3日&#xff0c;海南省數據產品超市印發《數據資產場景化評估案例手冊&#xff08;第二期&#xff09;》&#xff08;以下簡稱《手冊》&#xff09;&#xff0c;該手冊是基于真實數據要素典型應用場景進行數據資產評估操作的指導性手冊&#xff0c;為企業在數據資產入…

python3GUI--智慧交通監控與管理系統 By:PyQt5

文章目錄 一&#xff0e;前言二&#xff0e;預覽三&#xff0e;軟件組成&技術難點1.軟件組成結構2.技術難點3.項目結構 四&#xff0e;總結 大小&#xff1a;35.5 M&#xff0c;軟件安裝包放在了這里! 一&#xff0e;前言 博主高產&#xff0c;本次給大家帶來一款我自己使…

Linux高并發服務器開發 第八天(makefile的規則 wildcard/patsubst函數 普通變量/自動變量/其他關鍵字)

目錄 1.makefile 1.1makefile的規則 1.2兩個函數 1.3三個自動變量 1.3.1普通變量 (自定義變量) 1.3.2自動變量 1.3.3其他關鍵字 - ALL/all - clean 1.makefile - 作用&#xff1a;進行項目管理。 - 初步學習&#xff1a;1個規則、2個函數、3個自動變量。 - 要想使用默…

Vue動態控制disabled屬性

參考:https://blog.csdn.net/guhanfengdu/article/details/126082781 在Vue中disabled:的值是受布爾值影響的&#xff0c;false為關閉禁用&#xff0c;true為開啟禁用效果。 結果就是true會讓按鈕禁用 相反false會讓按鈕重新可以使用 那如果想要通過id屬性值來判斷是否禁用…

【DevOps】Jenkins項目發布

Jenkins項目發布 文章目錄 Jenkins項目發布前言資源列表基礎環境一、Jenkins發布靜態網站1.1、項目介紹1.2、部署Web1.3、準備gitlab1.4、配置gitlab1.5、創建項目1.6、推送代碼 二、Jenkins中創建gitlab憑據2.1、創建憑據2.2、在Jenkins中添加遠程主機2.3、獲取gitlab項目的UR…

每日一學——自動化工具(Jenkins)

3.2 Jenkins 3.2.1 CI/CD流程設計 嘿&#xff0c;小伙伴們&#xff01;今天我們來聊聊Jenkins——這個在持續集成&#xff08;CI&#xff09;和持續部署&#xff08;CD&#xff09;領域里大名鼎鼎的工具。Jenkins不僅可以幫我們自動化構建和測試代碼&#xff0c;還能自動部署…

Vue2/Vue3使用DataV

Vue2 注意vue2與3安裝DataV命令命令是不同的Vue3 DataV - Vue3 官網地址 注意vue2與3安裝DataV命令命令是不同的 vue3vite 與 Vue3webpack 對應安裝也不同vue3vite npm install kjgl77/datav-vue3全局引入 // main.ts中全局引入 import { createApp } from vue import Da…

【AI學習】Transformer深入學習(二):從MHA、MQA、GQA到MLA

前面文章&#xff1a; 《Transformer深入學習&#xff08;一&#xff09;&#xff1a;Sinusoidal位置編碼的精妙》 一、MHA、MQA、GQA 為了降低KV cache&#xff0c;MQA、GQA作為MHA的變體&#xff0c;很容易理解。 多頭注意力&#xff08;MHA&#xff09;&#xff1a; 多頭注…

trendFinder - 利用 AI 掌握社交媒體上的熱門話題

1600 Stars 177 Forks 7 Issues 2 貢獻者 MIT License Javascript 語言 代碼: https://github.com/ericciarla/trendFinder 更多AI開源軟件&#xff1a;AI開源 - 小眾AI Trend Finder 收集并分析來自關鍵影響者的帖子&#xff0c;然后在檢測到新趨勢或產品發布時發送 Slack 通知…

以圖像識別為例,關于卷積神經網絡(CNN)的直觀解釋

大家讀完覺得有意義記得關注和點贊&#xff01;&#xff01;&#xff01; 作者以圖像識別為例&#xff0c;用圖文而非數學公式的方式解釋了卷積神經網絡的工作原理&#xff0c; 適合初學者和外行掃盲。 目錄 1 卷積神經網絡&#xff08;CNN&#xff09; 1.1 應用場景 1.2 起…

Python 數據結構揭秘:棧與隊列

棧&#xff08;Stack&#xff09; 定義 棧是一種后進先出&#xff08;Last In First Out, LIFO&#xff09;的數據結構。它類似于一個容器&#xff0c;只能在一端進行插入和刪除操作。棧有兩個主要的操作&#xff1a;push&#xff08;入棧&#xff09;和 pop&#xff08;出棧…

vim 的基礎使用

目錄 一&#xff1a;vim 介紹二&#xff1a;vim 特點三&#xff1a;vim 配置四&#xff1a;vim 使用1、vim 語法格式2、vim 普通模式&#xff08;1&#xff09;保存退出&#xff08;2&#xff09;光標跳轉&#xff08;3&#xff09;文本刪除&#xff08;4&#xff09;文本查找&…

HP 電腦開機黑屏 | 故障判斷 | BIOS 恢復 | BIOS 升級

注&#xff1a;本文為 “HP 電腦開機黑屏 | 故障判斷 | BIOS 恢復 | BIOS 升級” 相關文章合輯。 引文圖片 csdn 轉儲異常&#xff0c;重傳。 篇 1&#xff1a;Smart-Baby 回復中給出故障現象判斷參考 篇 2、篇3 &#xff1a;HP 官方 BIOS 恢復、升級教程 開機黑屏&#xff0c…

JAVA:利用 Redis 實現每周熱評的技術指南

1、簡述 在現代應用中&#xff0c;尤其是社交媒體和內容平臺&#xff0c;展示熱門評論是常見的功能。我們可以通過 Redis 的高性能和豐富的數據結構&#xff0c;輕松實現每周熱評功能。本文將詳細介紹如何利用 Redis 實現每周熱評&#xff0c;并列出完整的實現代碼。 2、需求分…

VSCode下配置Blazor環境 斷點調試Blazor項目

VSCode下使用Blazor的環境配置和插件推薦 Blazor是一種用于構建交互式Web UI的.NET框架&#xff0c;它可以讓你使用C#、Razor和HTML進行Web開發&#xff0c;而不需要JavaScript。在這篇文章中&#xff0c;我們將介紹如何在VSCode中配置Blazor環境&#xff0c;并推薦一些有用的…