PyTorch,Dataset 재 작성/재 작성 및 Dataloader 불 러 오기
Dataset 과 Dataloder 는 pytorch 에서 데 이 터 를 불 러 오 는 위 젯 으로 알려 져 있 습 니 다.데 이 터 를 불 러 온 후 심도 있 는 학습 모델 훈련 을 해 야 한다.pytorch 의 일부 사례 교학 에서
torchvision.datasets
자체 가 가 진 MNIST,CIFAR-10 데이터 세트 를 자주 사용 합 니 다.일반적인 절 차 는 다음 과 같 습 니 다.
#
train_dataset = torchvision.datasets.CIFAR10(root=" ",download=True)
# load
train_loader = torch.utils.data.DataLoader(dataset=train_dataset)
그러나 우리 자신의 모델 훈련 에 서 는 비공 식적 으로 자체 제작 한 데이터 세트 를 사용 해 야 한다.이 럴 때 는 어떻게 해 야 하나 요?우 리 는 고 쳐 쓰기
torch.utils.data.Dataset
중의__getitem__
와__len__
를 통 해 우리 자신의 데이터 세트 를 불 러 올 수 있다.__getitem__
데이터 가 집 중 된 데 이 터 를 가 져 오고__len__
전체 데이터 집합의 길이(즉 개수)를 가 져 옵 니 다.고 쳐 쓰다
pytorch 홈 페이지 사례 에서 제공 하 는 얼굴 landmark데이터 세트를 사용 합 니 다.데이터 에는 landmark 를 저장 하 는 csv 파일 이 집중 되 어 있 지만,우 리 는 이 글 에서 사용 하지 않 습 니 다.
import os
import torch
from skimage import io, transform
import numpy as np
import matplotlib.pyplot as plt
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms, utils
plt.ion() # interactive mode
torch.utils.data.Dataset
은 추상 적 인 유형 으로 우리 자신의 데이터 세트 는 계승Dataset
한 다음 에 상기 두 가지 함 수 를 고 쳐 야 한다.
class ImageLoader(Dataset):
def __init__(self, file_path, transform=None):
super(ImageLoader,self).__init__()
self.file_path = file_path
self.transform = transform # , , None
self.image_names = os.listdir(self.file_path) #
def __getitem__(self,idx):
image = self.image_names[idx]
image = io.imread(os.path.join(self.file_path,image))
# if self.transform:
# image= self.transform(image)
return image
def __len__(self):
return len(self.image_names)
# , plot
imageloader = ImageLoader(file_path="D:\\Projects\\datasets\\faces\\")
# imageloader.__len__() # ( ), 71
# print(imageloader.__getitem__(0)) #
plt.imshow(imageloader.__getitem__(0)) #
plt.show()
받 은 그림 출력:받 은 데이터 출력,:
array([[[ 66, 59, 53],
[ 66, 59, 53],
[ 66, 59, 53],
...,
[ 59, 54, 48],
[ 59, 54, 48],
[ 59, 54, 48]],
...,
[153, 141, 129],
[158, 146, 134],
[158, 146, 134]]], dtype=uint8)
위 에서 보 듯 이dytpe=uint8
실제 훈련 을 할 때float
의 데이터 형식 으로 변경 해 야 한다.사용 가능:
# pytorch tensor float
# numpy float
to_float= torch.from_numpy(imageloader.__getitem__(0)).float()
고 쳐 쓰기 가 완료 되면train_loader =torch.utils.data.DataLoader(dataset=imageloader)
로 불 러 오기Dataloader
에 직접 사용 하면 사용 할 수 있 습 니 다.아래 코드 를 실행 해 볼 수 있 습 니 다.똑 같은 그림 결과 가 나 왔 습 니 다.
train_loader = torch.utils.data.DataLoader(dataset=imageloader)
train_loader.dataset[0]
plt.imshow(train_loader.dataset[0])
plt.show()
PyTorch 의 Dataset 재 작성/재 작성 및 Dataloader 불 러 오기 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 PyTorch 재 작성/Dataset 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
IceVision에서 형식별 데이터를 읽는 방법2021년에 가장 멋있는 물체 검출 프레임워크라고 해도 과언이 아닌 IceVision을 사용해, VOC format과 COCO format의 데이터 세트에 대해 Object Detection을 간단하게 실시하기 위한...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.