본문 바로가기

AI/AI 라이브러리

[Pytorch] 연습 데이터로 라이브러리 익숙해지기2

728x90
반응형

 

이전에 만들었던 모델을 더 간단하게 만들어보자.

 

모델을 구현할 때 Layer를 정해주지 않고 내가 원하는 방식의 NN을 만드는 방법(사용자 정의 레이어)이 있다.

 

바로 nn.Sequential을 사용하면 간단하다. 

 

여기서 CNN을 사용해 신경망을 구축 해볼 것이다.

 

# 데이터 전처리 레이어(사용자 정의 레이어)
class Lambda(nn.Module):
    def __init__(self,func):
        super().__init__()
        self.func = func
    def forward(self,x):
        return self.func(x)

def preprocess(x):
    return x.view(-1,1,28,29)
    
from torch import nn,optim
# Sequential 사용
model = nn.Sequential(
    Lambda(preprocess),
    nn.Conv2d(1,16,kernel_size=3,stride=2,padding=1),
    nn.ReLU(),
    nn.Conv2d(16,16,kernel_size=3,stride=2,padding=1),
    nn.ReLU(),
    nn.Conv2d(16,10,kernel_size=3,stride=2,padding=1),
    nn.ReLU(),
    nn.AdaptiveAvgPool2d(1),
    Lambda(lambda x: x.view(x.size(0), -1)),
)
opt = optim.SGD(model.parameters(),lr=0.5,momentum=0.9)

 

fit 함수를 사용하여 학습을 해보자

fit(50, model, loss_func, opt, train_dl, valid_dl)

 

 

 

 

pytorch.nn 실습2.ipynb

Colaboratory notebook

colab.research.google.com

 

728x90
반응형