Pytorch DataLoader shuffle驗(yàn)證方式
shuffle = False時(shí),不打亂數(shù)據(jù)順序
shuffle = True,隨機(jī)打亂
import numpy as np import h5py import torch from torch.utils.data import DataLoader, Dataset h5f = h5py.File('train.h5', 'w'); data1 = np.array([[1,2,3], [2,5,6], [3,5,6], [4,5,6]]) data2 = np.array([[1,1,1], [1,2,6], [1,3,6], [1,4,6]]) h5f.create_dataset(str('data'), data=data1) h5f.create_dataset(str('label'), data=data2) class Dataset(Dataset): def __init__(self): h5f = h5py.File('train.h5', 'r') self.data = h5f['data'] self.label = h5f['label'] def __getitem__(self, index): data = torch.from_numpy(self.data[index]) label = torch.from_numpy(self.label[index]) return data, label def __len__(self): assert self.data.shape[0] == self.label.shape[0], "wrong data length" return self.data.shape[0] dataset_train = Dataset() loader_train = DataLoader(dataset=dataset_train, batch_size=2, shuffle = True) for i, data in enumerate(loader_train): train_data, label = data print(train_data)
pytorch DataLoader使用細(xì)節(jié)
背景:
我一開(kāi)始是對(duì)數(shù)據(jù)擴(kuò)增這一塊有疑問(wèn), 只看到了數(shù)據(jù)變換(torchvisiom.transforms),但是沒(méi)看到數(shù)據(jù)擴(kuò)增, 后來(lái)搞明白了, 數(shù)據(jù)擴(kuò)增在pytorch指的是torchvisiom.transforms + torch.utils.data.DataLoader+多個(gè)epoch共同作用下完成的,
數(shù)據(jù)變換共有以下內(nèi)容
composed = transforms.Compose([transforms.Resize((448, 448)), # resize transforms.RandomCrop(300), # random crop transforms.ToTensor(), transforms.Normalize(mean=[0.5, 0.5, 0.5], # normalize std=[0.5, 0.5, 0.5])])
簡(jiǎn)單的數(shù)據(jù)讀取類, 進(jìn)返回PIL格式的image:
class MyDataset(data.Dataset): def __init__(self, labels_file, root_dir, transform=None): with open(labels_file) as csvfile: self.labels_file = list(csv.reader(csvfile)) self.root_dir = root_dir self.transform = transform def __len__(self): return len(self.labels_file) def __getitem__(self, idx): im_name = os.path.join(root_dir, self.labels_file[idx][0]) im = Image.open(im_name) if self.transform: im = self.transform(im) return im
下面是主程序
labels_file = "F:/test_temp/labels.csv" root_dir = "F:/test_temp" dataset_transform = MyDataset(labels_file, root_dir, transform=composed) dataloader = data.DataLoader(dataset_transform, batch_size=1, shuffle=False) """原始數(shù)據(jù)集共3張圖片, 以batch_size=1, epoch為2 展示所有圖片(共6張) """ for eopch in range(2): plt.figure(figsize=(6, 6)) for ind, i in enumerate(dataloader): a = i[0, :, :, :].numpy().transpose((1, 2, 0)) plt.subplot(1, 3, ind+1) plt.imshow(a)
從上述圖片總可以看到, 在每個(gè)eopch階段實(shí)際上是對(duì)原始圖片重新使用了transform, , 這就造就了數(shù)據(jù)的擴(kuò)增
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 我對(duì)PyTorch dataloader里的shuffle=True的理解
- Pytorch在dataloader類中設(shè)置shuffle的隨機(jī)數(shù)種子方式
- pytorch 實(shí)現(xiàn)多個(gè)Dataloader同時(shí)訓(xùn)練
- 解決Pytorch dataloader時(shí)報(bào)錯(cuò)每個(gè)tensor維度不一樣的問(wèn)題
- pytorch中DataLoader()過(guò)程中遇到的一些問(wèn)題
- Pytorch dataloader在加載最后一個(gè)batch時(shí)卡死的解決
- pytorch鎖死在dataloader(訓(xùn)練時(shí)卡死)
相關(guān)文章
Python使用 Beanstalkd 做異步任務(wù)處理的方法
這篇文章主要介紹了Python使用 Beanstalkd 做異步任務(wù)處理的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04windows下安裝python的C擴(kuò)展編譯環(huán)境(解決Unable to find vcvarsall.bat)
這篇文章主要介紹了windows下安裝python的C擴(kuò)展編譯環(huán)境(解決Unable to find vcvarsall.bat),需要的朋友可以參考下2018-02-02人臉識(shí)別經(jīng)典算法一 特征臉?lè)椒ǎ‥igenface)
這篇文章主要為大家詳細(xì)介紹了人臉識(shí)別經(jīng)典算法一,特征臉?lè)椒‥igenface,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03Pycharm中安裝Pygal并使用Pygal模擬擲骰子(推薦)
這篇文章主要介紹了Pycharm中安裝Pygal并使用Pygal模擬擲骰子,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Numpy將二維數(shù)組添加到空數(shù)組的實(shí)現(xiàn)
今天小編就為大家分享一篇Numpy將二維數(shù)組添加到空數(shù)組的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12pytorch中常用的乘法運(yùn)算及相關(guān)的運(yùn)算符(@和*)
pytorch是深度學(xué)習(xí)框架,而深度學(xué)習(xí)其實(shí)本質(zhì)就是一大堆矩陣乘法,最后用來(lái)模擬一個(gè)高維擬合函數(shù),下面這篇文章主要給大家介紹了關(guān)于pytorch中常用的乘法運(yùn)算及相關(guān)的運(yùn)算符(@和*)的相關(guān)資料,需要的朋友可以參考下2022-01-01解析PyCharm Python運(yùn)行權(quán)限問(wèn)題
這篇文章主要介紹了PyCharm Python運(yùn)行權(quán)限問(wèn)題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5打印控件QPrinter詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5打印控件QPrinter詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-02-02