minhui study

Pytorch - 각 Layer별 역할 개념 및 파라미터 파악 본문

딥러닝,인공지능

Pytorch - 각 Layer별 역할 개념 및 파라미터 파악

minhui 2021. 1. 12. 21:57

PyTorch Layer 이해하기

예제 불러오기

 

* PyTorch는 TensorFlow와 다르게 [Batch Size, Channel, Height, Width] 임을 명시해야한다.

 

 

 

각 Layer별 설명

  • Network 쌓기 위한 준비

▶ Convolution

  • in_channels: 받게 될 channel의 갯수
  • out_channels: 보내고 싶은 channel의 갯수
  • kernel_size: 만들고 싶은 kernel(weights)의 사이즈

  • detach() method는 그래프에서 잠깐 빼서 gradient에 영향을 받지 않게 한다.

  • output 시각화 준비를 위해 numpy화

  • Input으로 들어간 이미지 numpy화

 

 

▶ Pooling

input을 먼저 앞에 넣고, 뒤에 kernel 사이즈와 stride를 순서대로 넣음

  • MaxPool Layer는 weight가 없기 때문에 바로 numpy()가 가능하다.

 

▶ Linear

nn.Linear는 2d가 아닌 1d만 들어가기 때문에 .view() 1D로 펼쳐줘야한다.

 

▶ Softmax

: Softmax는 입력받는 값을 출력을 0~1사이의 값으로 모두 정규화하며 출력값들의 총합은 항상 1이 되는 특성을 가진 함수이다.

결과를 numpy로 꺼내기 위해선 weight가 담긴 Linear에 weight를 꺼줘야한다.

 

Layer 쌓기

예제 출처: https://pytorch.org/tutorials/beginner/pytorch_with_examples.html#id23

 

Learning PyTorch with Examples — PyTorch Tutorials 1.7.1 documentation

Learning PyTorch with Examples Author: Justin Johnson This tutorial introduces the fundamental concepts of PyTorch through self-contained examples. At its core, PyTorch provides two main features: An n-dimensional Tensor, similar to numpy but can run on GP

pytorch.org

 

nn nn.functional의 차이점

  • nn은 학습 파라미터가 담긴 것
  • nn.functional은 학습 파라미터가 없는 것이라 생각하면 간단

    * __init__에는 weight가 필요했던 convolution과 Linear가 있다.
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(1, 20, 5, 1)
        self.conv2 = nn.Conv2d(20, 50, 5, 1)
        self.fc1 = nn.Linear(4*4*50, 500)
        self.fc2 = nn.Linear(500, 10)
        
    def forward(self, x):
        # Feature Extraction
        x = F.relu(self.conv1(x))
        x = F.max_pool2d(x, 2, 2)
        x = F.relu(self.conv2(x))
        x = F.max_pool2d(x, 2, 2)
        
        # Fully Connected (Classficiation)
        x = x.view(-1, 4*4*50)
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        return F.log_softmax(x, dim=1)

 

  • Image를 Model에 넣어서 결과 확인
  • nn.functional은 output과 layer을 반환하는 forward(input)메서드를 포함하고 있다.

 

Comments