반응형
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 |
댓글