인공지능 공부/pytorch

(2022.06.30) Dataset and Dataloader

'''
epoch = 1 forward and backward pass of ALL training samples

batch_size = number of training samples in one forward & backward pass

number of = iterations = number of passes, each pass using [batch_size] number of sampeles

e.g. 100 samples, batch_size = 20 --> 100/20 = 5 iterations for 1 epoch

'''

import torch
import torchvision
from torch.utils.data import Dataset, DataLoader
import numpy as np
import math

class WineDataset(Dataset):
    def __init__(self):
        # data loading 
        xy = np.loadtxt('./practic_torch/data/wine.csv', delimiter=',', dtype= np.float32, skiprows = 1)
        self.x = torch.from_numpy(xy[:, 1:])
        self.y = torch.from_numpy(xy[:, [0]]) # n_samples, 1
        self.n_samples = xy.shape[0]


    def __getitem__(self, index):
        return self.x[index], self.y[index]

    def __len__(self):
        return self.n_samples

dataset = WineDataset()
dataloader = DataLoader(dataset=dataset, batch_size=4, shuffle = True, num_workers=2)

# training loop
num_epochs = 2 
total_samples = len(dataset)
print(total_samples)
n_iterations = math.ceil(total_samples / 4)
print(n_iterations)


for epoch in range(num_epochs):
    for i, (inputs, labels) in enumerate(dataloader):
        # forwar bacward. update
        if (i+1) % 5 == 0:
            print(f'epoch {epoch+1} / {num_epochs}, step {i+1}/{n_iterations}, inputs {inputs.shape}')

'인공지능 공부 > pytorch' 카테고리의 다른 글

(2022.07.03) Brain Tumor MRI detection  (0) 2022.07.03
(2022.07.01) Pytorch Rice Classification  (0) 2022.07.01
(2022.07.01) CNN  (0) 2022.07.01
(2022.07.01) Feed Forward Net  (0) 2022.07.01
(2022.06.30) pytorch linear_regression  (0) 2022.06.30