반응형
while와 iter 메서드를 활용하여 파이토치 데이터 로더 5개의 데이터 까지만 확인해 보는 방법¶
In [1]:
# 패키지 불러오기
import torch
from torch.utils.data import DataLoader, Dataset
In [2]:
# 0에서 100사이 정수로 샘플 데이터 만들기
data_size = 100
sequence_length = 2
vector_size = 3
data = torch.randint(0, 100, [data_size, sequence_length, vector_size])
data[:2]
Out[2]:
tensor([[[24, 78, 16],
[78, 63, 12]],
[[98, 42, 13],
[27, 62, 49]]])
In [3]:
# 샘플 데이터 셋 만들기
class MyDataset(Dataset):
def __init__(self, data):
self.data = data
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
return self.data[idx]
dataset = MyDataset(data)
dataset[0]
Out[3]:
tensor([[24, 78, 16],
[78, 63, 12]])
In [4]:
# 데이터 로더 생성
dataloader = DataLoader(dataset, batch_size=3, shuffle=True)
while와 iter 메서드를 활용하여 파이토치 데이터 로더 5개의 데이터 까지만 확인해 보는 방법¶¶
iter메서드를 사용하여 dataloader를 이터레이터로 전환합니다.next함수를 이용하여 차례대로 데이터를 불러와서 처리를 하데 n 이 10 을 넘어 섰을때, 멈출 수 있게while문을 설정합니다.
In [5]:
n = 0
dataloader_iter = iter(dataloader)
while n<5:
print(f"step {n}")
sample_data = next(dataloader_iter)
print(sample_data)
n+=1
step 0
tensor([[[53, 97, 26],
[30, 60, 61]],
[[58, 18, 97],
[ 6, 9, 14]],
[[68, 99, 54],
[42, 44, 3]]])
step 1
tensor([[[61, 47, 7],
[45, 20, 69]],
[[53, 95, 49],
[25, 95, 36]],
[[66, 46, 22],
[68, 48, 62]]])
step 2
tensor([[[61, 72, 8],
[52, 53, 70]],
[[ 8, 30, 41],
[92, 87, 57]],
[[28, 20, 29],
[95, 12, 7]]])
step 3
tensor([[[29, 0, 66],
[ 8, 85, 4]],
[[94, 26, 53],
[11, 9, 32]],
[[65, 40, 92],
[17, 33, 71]]])
step 4
tensor([[[ 5, 54, 2],
[11, 20, 4]],
[[68, 88, 29],
[98, 54, 97]],
[[31, 75, 50],
[63, 34, 20]]])
- 단 ! 아래 코드와 같이 반복문을 사용한다면 무한정 돌아갈 수 있음을 확인해주세요 !
In [6]:
n = 0
while n<5:
for sample_data in dataloader_iter:
print(f"step {n}")
print(sample_data)
n+=1
step 0
tensor([[[76, 32, 59],
[47, 68, 24]],
[[80, 19, 23],
[89, 38, 32]],
[[58, 73, 99],
[91, 62, 61]]])
step 1
tensor([[[23, 18, 20],
[83, 86, 60]],
[[49, 99, 12],
[76, 63, 32]],
[[ 3, 65, 54],
[21, 70, 55]]])
step 2
tensor([[[22, 34, 49],
[96, 24, 40]],
[[71, 19, 20],
[35, 1, 92]],
[[14, 54, 49],
[79, 27, 2]]])
step 3
tensor([[[18, 90, 39],
[12, 22, 22]],
[[45, 59, 57],
[59, 0, 26]],
[[22, 91, 88],
[33, 14, 42]]])
step 4
tensor([[[56, 34, 27],
[75, 21, 99]],
[[57, 14, 21],
[66, 73, 13]],
[[82, 43, 87],
[49, 43, 22]]])
step 5
tensor([[[45, 3, 3],
[ 8, 88, 87]],
[[14, 22, 80],
[38, 6, 25]],
[[90, 69, 86],
[46, 54, 4]]])
step 6
tensor([[[92, 54, 59],
[98, 66, 60]],
[[26, 94, 91],
[67, 66, 14]],
[[36, 63, 13],
[55, 2, 68]]])
step 7
tensor([[[15, 47, 48],
[31, 3, 4]],
[[14, 33, 78],
[69, 72, 99]],
[[ 7, 30, 52],
[17, 11, 98]]])
step 8
tensor([[[56, 24, 50],
[20, 46, 55]],
[[83, 62, 2],
[50, 60, 36]],
[[48, 60, 64],
[77, 35, 4]]])
step 9
tensor([[[27, 14, 11],
[24, 94, 84]],
[[35, 7, 75],
[74, 65, 4]],
[[16, 82, 59],
[47, 21, 51]]])
step 10
tensor([[[40, 36, 20],
[73, 28, 23]],
[[10, 97, 26],
[51, 22, 93]],
[[15, 24, 63],
[99, 38, 57]]])
step 11
tensor([[[35, 72, 45],
[55, 59, 76]],
[[39, 69, 69],
[99, 19, 24]],
[[50, 72, 52],
[56, 62, 28]]])
step 12
tensor([[[17, 90, 64],
[89, 91, 70]],
[[64, 36, 21],
[58, 92, 21]],
[[50, 63, 35],
[41, 12, 35]]])
step 13
tensor([[[24, 67, 95],
[22, 45, 39]],
[[83, 5, 35],
[14, 49, 59]],
[[95, 24, 52],
[22, 76, 53]]])
step 14
tensor([[[23, 33, 52],
[50, 97, 9]],
[[72, 97, 66],
[27, 51, 21]],
[[83, 52, 21],
[72, 50, 93]]])
step 15
tensor([[[85, 15, 83],
[46, 27, 60]],
[[74, 97, 29],
[85, 84, 81]],
[[48, 99, 7],
[84, 48, 67]]])
step 16
tensor([[[91, 20, 63],
[54, 34, 89]],
[[68, 7, 44],
[63, 70, 87]],
[[92, 7, 17],
[18, 27, 6]]])
step 17
tensor([[[80, 51, 11],
[35, 36, 65]],
[[77, 81, 53],
[33, 91, 70]],
[[47, 6, 48],
[97, 30, 72]]])
step 18
tensor([[[52, 36, 39],
[92, 54, 27]],
[[18, 79, 95],
[ 8, 36, 69]],
[[43, 91, 30],
[72, 95, 4]]])
step 19
tensor([[[15, 45, 95],
[91, 34, 88]],
[[77, 78, 89],
[ 6, 44, 6]],
[[48, 82, 61],
[97, 49, 30]]])
step 20
tensor([[[71, 89, 22],
[95, 3, 70]],
[[75, 49, 52],
[67, 78, 57]],
[[27, 68, 40],
[45, 99, 88]]])
step 21
tensor([[[73, 40, 49],
[48, 35, 49]],
[[25, 16, 36],
[52, 37, 44]],
[[75, 68, 88],
[54, 33, 31]]])
step 22
tensor([[[74, 69, 21],
[72, 31, 54]],
[[58, 17, 91],
[88, 71, 58]],
[[42, 1, 71],
[95, 12, 82]]])
step 23
tensor([[[33, 39, 37],
[33, 26, 87]],
[[29, 20, 44],
[48, 44, 87]],
[[27, 98, 47],
[86, 6, 22]]])
step 24
tensor([[[23, 59, 69],
[21, 9, 28]],
[[ 4, 49, 56],
[85, 36, 11]],
[[76, 45, 71],
[50, 29, 91]]])
step 25
tensor([[[87, 61, 77],
[69, 33, 2]],
[[20, 45, 41],
[44, 65, 9]],
[[55, 90, 90],
[54, 88, 31]]])
step 26
tensor([[[85, 60, 29],
[96, 28, 56]],
[[98, 69, 96],
[75, 22, 27]],
[[36, 83, 51],
[53, 68, 72]]])
step 27
tensor([[[96, 27, 33],
[33, 61, 22]],
[[24, 78, 16],
[78, 63, 12]],
[[98, 42, 13],
[27, 62, 49]]])
step 28
tensor([[[ 2, 5, 5],
[ 1, 25, 36]]])
반응형
'python' 카테고리의 다른 글
| 파이토치 정수 랜덤 생성 (0) | 2023.08.29 |
|---|---|
| 파이토치 손실함수 Cross Entropy Loss (0) | 2023.08.29 |
| 파이토치 rnn계열 sequence length 순환 기능 제공 여부 확인 (0) | 2023.08.27 |
| matplotlib을 이용하여 컬럼수가 많을 때 컬러 그래프 만들기 (0) | 2023.08.26 |
| ConversionError: Failed to convert value(s) to axis units: (0) | 2023.08.26 |
댓글