自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在 PyTorch 中使用 Datasets 和 DataLoader 自定義數(shù)據(jù)

人工智能 深度學(xué)習(xí)
有時(shí)候,在處理大數(shù)據(jù)集時(shí),一次將整個(gè)數(shù)據(jù)加載到內(nèi)存中變得非常難。唯一的方法是將數(shù)據(jù)分批加載到內(nèi)存中進(jìn)行處理,這需要編寫額外的代碼來(lái)執(zhí)行此操作。對(duì)此,PyTorch 已經(jīng)提供了 Dataloader 功能。

有時(shí)候,在處理大數(shù)據(jù)集時(shí),一次將整個(gè)數(shù)據(jù)加載到內(nèi)存中變得非常難。

因此,唯一的方法是將數(shù)據(jù)分批加載到內(nèi)存中進(jìn)行處理,這需要編寫額外的代碼來(lái)執(zhí)行此操作。對(duì)此,PyTorch 已經(jīng)提供了 Dataloader 功能。

DataLoader

下面顯示了 PyTorch 庫(kù)中DataLoader函數(shù)的語(yǔ)法及其參數(shù)信息。

  1. DataLoader(dataset, batch_size=1, shuffle=False, sampler=None, 
  2.            batch_sampler=None, num_workers=0, collate_fn=None, 
  3.            pin_memory=False, drop_last=False, timeout=0, 
  4.            worker_init_fn=None, *, prefetch_factor=2, 
  5.            persistent_workers=False

幾個(gè)重要參數(shù)

  • dataset:必須首先使用數(shù)據(jù)集構(gòu)造 DataLoader 類。
  • Shuffle :是否重新整理數(shù)據(jù)。
  • Sampler :指的是可選的 torch.utils.data.Sampler 類實(shí)例。采樣器定義了檢索樣本的策略,順序或隨機(jī)或任何其他方式。使用采樣器時(shí)應(yīng)將 Shuffle 設(shè)置為 false。
  • Batch_Sampler :批處理級(jí)別。
  • num_workers :加載數(shù)據(jù)所需的子進(jìn)程數(shù)。
  • collate_fn :將樣本整理成批次。Torch 中可以進(jìn)行自定義整理。

加載內(nèi)置 MNIST 數(shù)據(jù)集

MNIST 是一個(gè)著名的包含手寫數(shù)字的數(shù)據(jù)集。下面介紹如何使用DataLoader功能處理 PyTorch 的內(nèi)置 MNIST 數(shù)據(jù)集。

  1. import torch 
  2. import matplotlib.pyplot as plt 
  3. from torchvision import datasets, transforms 

上面代碼,導(dǎo)入了 torchvision 的torch計(jì)算機(jī)視覺(jué)模塊。通常在處理圖像數(shù)據(jù)集時(shí)使用,并且可以幫助對(duì)圖像進(jìn)行規(guī)范化、調(diào)整大小和裁剪。

對(duì)于 MNIST 數(shù)據(jù)集,下面使用了歸一化技術(shù)。

ToTensor()能夠把灰度范圍從0-255變換到0-1之間。

  1. transform = transforms.Compose([transforms.ToTensor()]) 

下面代碼用于加載所需的數(shù)據(jù)集。使用 PyTorchDataLoader通過(guò)給定 batch_size = 64來(lái)加載數(shù)據(jù)。shuffle=True打亂數(shù)據(jù)。

  1. trainset = datasets.MNIST('~/.pytorch/MNIST_data/', download=True, train=True, transform=transform) 
  2. trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True

為了獲取數(shù)據(jù)集的所有圖像,一般使用iter函數(shù)和數(shù)據(jù)加載器DataLoader。

  1. dataiter = iter(trainloader) 
  2. images, labels = dataiter.next() 
  3. print(images.shape) 
  4. print(labels.shape) 
  5. plt.imshow(images[1].numpy().squeeze(), cmap='Greys_r'

自定義數(shù)據(jù)集

下面的代碼創(chuàng)建一個(gè)包含 1000 個(gè)隨機(jī)數(shù)的自定義數(shù)據(jù)集。

  1. from torch.utils.data import Dataset 
  2. import random 
  3.   
  4. class SampleDataset(Dataset): 
  5.   def __init__(self,r1,r2): 
  6.       randomlist=[] 
  7.       for i in range(120): 
  8.           n = random.randint(r1,r2) 
  9.           randomlist.append(n) 
  10.       self.samples=randomlist  
  11.   
  12.   def __len__(self): 
  13.       return len(self.samples) 
  14.   
  15.   def __getitem__(self,idx): 
  16.       return(self.samples[idx]) 
  17.   
  18. dataset=SampleDataset(1,100) 
  19. dataset[100:120] 

 

在這里插入圖片描述

最后,將在自定義數(shù)據(jù)集上使用 dataloader 函數(shù)。將 batch_size 設(shè)為 12,并且還啟用了num_workers =2 的并行多進(jìn)程數(shù)據(jù)加載。

  1. from torch.utils.data import DataLoader 
  2. loader = DataLoader(dataset,batch_size=12, shuffle=True, num_workers=2 ) 
  3. for i, batch in enumerate(loader): 
  4.     print(i, batch) 

 寫在后面通過(guò)幾個(gè)示例了解了 PyTorch Dataloader 在將大量數(shù)據(jù)批量加載到內(nèi)存中的作用。

 

責(zé)任編輯:姜華 來(lái)源: Python之王
相關(guān)推薦

2022-11-23 15:26:25

Ubuntu程序塢

2009-06-23 11:35:44

JSF的Naviati

2009-11-10 17:12:22

VB.NET自定義類型

2023-11-14 10:05:52

Java開發(fā)工具

2011-06-15 09:24:36

Qt Widget Model

2023-09-12 13:59:41

OpenAI數(shù)據(jù)集

2023-09-04 15:06:18

Pytorch靜態(tài)量化動(dòng)態(tài)量化

2021-12-02 18:05:21

Android Interpolato動(dòng)畫

2015-02-12 15:33:43

微信SDK

2021-05-28 08:58:41

Golang網(wǎng)卡metrics

2019-12-25 11:47:27

LinuxFVWM

2022-01-14 09:17:13

PythonAPISIX插件

2010-10-25 16:05:07

oracle自定義函數(shù)

2015-02-12 15:38:26

微信SDK

2011-06-20 16:54:40

Qt Widget model

2009-09-11 11:04:23

C# WinForm自

2022-08-24 14:11:13

GNOME桌面應(yīng)用

2023-12-29 08:01:52

自定義指標(biāo)模板

2020-07-25 16:33:02

tmuxGitLinux終端

2022-11-29 08:07:23

CSSJavaScript自定義
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)