Pytorch DataLoader shuffle 검증 방식
3855 단어 PytorchDataLoadershuffle
shuffle=True,랜 덤 으로 흐 트 러 짐
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 사용 세부 정보배경:
저 는 처음에 데이터 확장 에 의문 이 있 었 습 니 다.데이터 변환(torchvisiom.transforms)만 보 았 지만 데이터 가 증가 하 는 것 을 보지 못 했 습 니 다.나중에 알 게 되 었 습 니 다.데이터 증 가 는 pytorch 가 torchvisiom.transforms+torch.utils.data.dataLoader+여러 epoch 의 공동 작용 으로 이 루어 졌 습 니 다.
데이터 변환 은 모두 다음 과 같은 내용 이 있다.
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])])
간단 한 데이터 읽 기 클래스 입 니 다.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)
""" 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)
상기 사진 을 통 해 알 수 있 듯 이 모든 eopch 단계 에서 실제 적 으로 원본 그림 에 transform 을 다시 사 용 했 기 때문에 데이터 의 증 가 를 만 들 었 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Pytorch는 cpu와 gpu의 사용을 어떻게 전환하는지 상세히 설명합니다.앞에서 말했듯이pytorch에서 서버에 있는 gpu가 점용될 때 우리는 먼저 cpu로 코드를 디버깅하고 싶을 때가 많다. 그러면 gpu와 cpu의 전환이 필요하다. 장치를 가변 매개 변수로 사용하려면argparse를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.