728x90
반응형
torch.nn.Module
- 딥러닝을 구성하는 Layer의 base class
- Input, Output, Forward, Backward 정의
- 학습의 대상이 되는 parameter(tensor) 정의
파이토치 공식 document에서 명시한 코드로 예시를 써놓는다.
https://pytorch.org/docs/stable/generated/torch.nn.Module.html#torch.nn.Module
Module — PyTorch 1.13 documentation
Shortcuts
pytorch.org
import torch.nn as nn # 신경망에서 일반적으로 사용되는 모든 연산은 torch.nn모듈에서 활용 가능
import torch.nn.functional as F
class Model(nn.Module):
def __init__(self): # 부모에서 자식클래스로 넘어갈 때 객체가 갖는 속성값을 초기화
super().__init__() # super()함수는 Model 클래스는 nn.Module 클래스 속성을 가지고 초기화 된다.
# super(파생클래스,self).__init__()은 super.__init__()과 기능의 차이는 없고 파생클래스를 명시해 준다는 차이점만 있다.
self.conv1 = nn.Conv2d(1, 20, 5)
self.conv2 = nn.Conv2d(20, 20, 5)
def forward(self, x):
x = F.relu(self.conv1(x))
return F.relu(self.conv2(x))
nn.Parameter
- Tensor 객체의 상속 객체
- nn.Module 내에 attribute가 될때는 required_grad=True (Auto Grad의 대상이 된다.)
- 직접 지정할 일이 잘 없다.(대부분 layer에는 weights 값들이 잘 지정되어 있다.)
Backward
-Layer에 있는 Parameter들의 미분을 수행
- Forward의 결과값 (model의 output=예측치)과 실제값간의 차이(loss)에 대해 미분을 수행
- 해당 값으로 Parameter 업데이트
for epoch in range(epochs):
optimizer.zero_grad()
# 주어진 inputs를 model에 넣어 얻은 outputs 추출 (forward propagation)
outputs = model(inputs)
# 데이터에 적혀있는 값(labels)와 model을 통해 얻은 outputs의 차이 loss 계산
loss = criterion(outputs, labels)
# parameters에 관하여 gradients 구하기(backpropagation)
loss.backward()
# update parameters(파라미터, 가중치 업데이트)
optimizer.step()
728x90
반응형
'AI-Tech 부스트캠프 > 파이토치' 카테고리의 다른 글
[PyTorch] torch.transpose()와 numpy().transpose() 차이 (0) | 2023.01.01 |
---|---|
[PyTorch] 모델 불러오기 (0) | 2022.12.24 |
[PyTorch] Dataset & Dataloaders (0) | 2022.12.24 |
[PyTorch] 파이토치 기본 구조에 대해서 알아보자 (0) | 2022.12.23 |
[PyTorch] 파이토치에 대해서 알아보자 (0) | 2022.12.23 |
댓글