및 torch.utils.data.DataLoader
을 자신의 데이터에 사용하는 방법 (torchvision.datasets
제외)은 무엇입니까?PyTorch : 맞춤 데이터 집합에 DataLoader를 사용하는 방법
어떤 데이터 세트에서 사용되는 TorchVisionDatasets
에 사용되는 inbuilt DataLoaders
을 사용할 수있는 방법이 있습니까?
및 torch.utils.data.DataLoader
을 자신의 데이터에 사용하는 방법 (torchvision.datasets
제외)은 무엇입니까?PyTorch : 맞춤 데이터 집합에 DataLoader를 사용하는 방법
어떤 데이터 세트에서 사용되는 TorchVisionDatasets
에 사용되는 inbuilt DataLoaders
을 사용할 수있는 방법이 있습니까?
예, 가능합니다. 직접 개체를 만들면됩니다.
import torch.utils.data as data_utils
train = data_utils.TensorDataset(features, targets)
train_loader = data_utils.DataLoader(train, batch_size=50, shuffle=True)
곳 features
및 targets
는 텐서이다. features
은 2-D, 즉 각 행이 하나의 학습 샘플을 나타내는 행렬이어야하며 targets
은 스칼라 또는 벡터 예측 여부에 따라 1-D 또는 2-D가 될 수 있습니다.
희망 하시겠습니까?
편집 : @의 사르 탁의 질문에 대한 응답
기본적으로 예. 그러나
assert data_tensor.size(0) == target_tensor.size(0)
: 당신이 유형 TensorData
의 객체를 만들 경우, 생성자는 (실제로 data_tensor
라고) 기능 텐서의 첫 번째 치수와 (target_tensor
이라고 함) 대상 텐서가 동일한 길이를 가지고 있는지 조사 이 데이터를 이후에 신경망에 공급하려면 조심해야합니다. 컨볼 루션 (convolution) 레이어는 당신과 같은 데이터에서 작동하지만 (저는 생각합니다) 모든 다른 유형의 레이어는 데이터가 매트릭스 형식으로 제공 될 것으로 기대합니다. 따라서 이와 같은 문제가 발생하면 메서드를 사용하여 4D 데이터 집합 (일종의 텐서로 지정, 예 : FloatTensor
)을 행렬로 변환하는 것이 쉬운 해결책입니다. 당신의 5000xnxnx3 데이터 세트의 경우, 이것은 다음과 같을 것이다 :
2d_dataset = 4d_dataset.view(5000, -1)
(. 값 -1
자동으로 두 번째 차원의 길이를 알아 내기 위해 PyTorch을 말한다)
저는 3D 기능을 가지고 있습니다 : 이미지 용 2D와 컬러 채널 용 추가 차원. 5000xnxnx3으로 기능을 전달하면 여전히 작동합니까? 5000은 데이터 포인트의 수입니다. nxnx3은 이미지 크기입니다. – Sarthak
기본적으로 예,하지만 내 대답의 편집을 확인하십시오. – pho7
4d 데이터 집합을 뷰 문이 필요없는 기능으로 전달할 수 있습니다. – Sarthak