minhui study
Pytorch - 각 Layer별 역할 개념 및 파라미터 파악 본문
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
▶ 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)메서드를 포함하고 있다.
'딥러닝,인공지능' 카테고리의 다른 글
[이미지 분석으로배우는 tensorflow2.0 와 Pytorch] - Preprocess (0) | 2021.01.20 |
---|---|
Pytorch - Optimizer 및 Training / Evaluating & Predicting (0) | 2021.01.12 |
Tensorflow 2.0 - Optimizer 및 Training / Evaluating & Predicting (0) | 2021.01.12 |
Tensorflow 2.0 - 각 Layer별 역할 개념 및 파라미터 파악 (0) | 2021.01.08 |
Tensorflow 2.0 - dataset (MNIST) (0) | 2021.01.08 |
Comments