딥러닝 프레임워크
유연성과 사용 편의성
torch.nn.Module: 모든 신경망 모델의 기본 클래스
init: 구조 만들기init(초기화 함수)를 가져옴import torch.nn as nn
class MyModel(nn.Nodule):
def __init__(self):
super(MyModel, self).__init__()
self.layer1 = nn.Linear(10,20) # 입력, 출력
foward 데이터의 방향 결정 def foward(self, x):
x = self.layer1(x)
return x
torch.utils.data.Dataset: 사용자 정의 데이터셋 생성
torch의 유틸리티 중, 데이터 기능의, Dataset 모듈from torch.utils.data import Dataset
class MyDataset(Dataset):
def __init__ (self, data, targets):
self.data = data
self.targets = targets
def __len__(self):
return len(self.data)
idx: 인덱스에 해당하는 샘플을 반환def __getitem__(self, idx):
return self.data[idx], self.targets[idx]
torch.utils.data.DataLoader
from torch.utils.data import DataLoader
dataset = MyDataset(data, targets)
dataloader = Dataloader(dataset, batch-size = 32, shuffle = True)
Dataset, DataLoader 매개변수trainset = torchvision.datasets.MNIST(root='./data', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True, drop_last = False, timeout = 1)
Datasetroot="경로": 데이터 경로download=True: 경로에 없으면 다운로드trian = True: 학습용 데이터, 테스트용인 경우는 Falsetansform 데이터 변형, 변형방식은 사용자 정의DataLoadertrainset: 변환 할 데이터셋batch-size: 배치 하나당 포함 될 샘플의 수shuffle: 데이터 순서 무작위 여부drop-last: 배치 사이즈로 나눈 나머지 처리 여부timeout: 시간 제한torchvision.transforms: 이미지 데이터 변환 유틸리티
transforms.ToTensor(): 이미지를 Tensor(파이토치 자료구조)로 전환
transforms.Normalize((): 이미지 정규화(평균, 표준편차)
transform = transforms.Compose([
transforms.ToTensor(),
# 이미지를 Tensor(파이토치 자료구조)로 전환
transforms.Normalize((0.5,), (0.5,))
# 이미지 정규화(평균, 표준편차)
])
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model.to(device)
devise(GPU)로 이동inputs, targets = inputs.to(device), targets.to(device)
torch.save(model.state_dict(), 'model.pth'
model.load_state_dict(torch.load('model.pth'))
model.eval()
# 학습
model.train()
# 평가
model.eval()