Deep Learning/PyTorch(9)
-
AutoGrad 구조 및 이해
torch.autograd는 신경망(NN) 훈련을 지원하는 PyTorch의 자동미분 엔진이다. 이 포스트를 읽으면, 어떻게 AutoGrad가 신경망 훈련을 돕는지 개념적인 이해를 할 수 있을 것이다. 신경망은 2가지 단계로 훈련이 일어난다. 1. Forward Propagation 2. Backward Propagation 전반적인 코드 흐름은 다음과 같다. 1. 모델 및 데이터를 생성 한다. 2. Forward pass : 입력 데이터를 모델로 예측한다. 3. 예측에 대한 loss값을 계산한다. 4. Backward pass : 각 모델 파라미터를 loss에 대해 미분하여 저장한다. 5. optimizer로 모델 파라미터의 최적값을 찾기 위해, 변수들을 업데이트 한다. # AutoGrad에서의 미분 T..
2022.02.02 -
Module의 apply() 메서드
apply() 메서드는 해당 Module의 모든 sub-module에 인수받은 함수를 적용시켜준다. 예를 들면, 다음과 같이 Seqential 모듈의 가중치를 1로 초기화시킬 수 있다. @torch.no_grad() def init_weights(m): print(m) if type(m) == nn.Linear: m.weight.fill_(1.0) print(m.weight) net = nn.Sequential(nn.Linear(2, 2), nn.Linear(2, 2)) net.apply(init_weights)
2022.01.28 -
PyTorch Containers
Container는 여러 개의 Module들을 묶어서 사용하고 싶을 때 사용한다. 다음은 PyTorch에서 제공하는 Container들이다. Module 모든 신경망 모델들의 base 클래스 Sequential 하나의 순차적인 container ModuleList sub-module들을 하나의 list로 가짐 ModuleDict sub-module들을 하나의 dict로 가짐 ParameterList Parameter들을 하나의 list로 가짐 ParameterDict Parameter들을 하나의 dict로 가짐 # Sequential 생성자에 전달된 순서대로 인수된 Module이 추가된다. 여기서 인수로는 *Module나 OrderDict로 모듈을 전달할 수 있다. Sequential의 forward()..
2022.01.28 -
Module 클래스
모든 신경말 모델들의 base 클래스로서, 여러 기능들을 한 곳에 모아놓는 상자 역할을 한다. 또한 이 클래스는 다른 nn.Module도 포함하여 트리 구조로 중첩할 수도 있다. 따라서 nn.Module 클래스는 빈 상자일 뿐 어떻게 설계할지는 사용자의 몫이다. 예를 들면, 기본적으로 다음과 같이 구성할 수 있다. import torch.nn as nn import torch.nn.functional as F class Model(nn.Module): def __init__(self): super(Model, self).__init__() self.conv1 = nn.Conv2d(1, 20, 5) self.conv2 = nn.Conv2d(20, 20, 5) def forward(self, x): x = ..
2022.01.28 -
PyTorch 란?
# PyTorch 딥러닝 모델을 짜기 위한 프레임워크. 예전에는 Julia, Keras 등등 수많은 딥러닝 프레임워크가 존재했지만, PyTorch와 TensorFlow가 남았다고 볼 수 있다. 여기서 Keras는 어떤 기능이 있기 보다는 Wrapper로서, 고수준 API라고 볼 수 있다. 딥러닝 프레임워크가 필요한 이유는 기초부터 다짜서, 프로젝트를 완성하기에는 너무 오랜시간이 걸리기 때문이다. 하지만 실제로 기본 바닥부터 짜기도 한다. 만약 원한다면, 를 보는 것을 추천한다. TensorFlow PyTorch Define and run Define by Run Dynamic Computation Graph (DCG) static graph 그려서, 나중에 실행시점에 역전파가 일어남. graph를 작성하..
2022.01.28 -
Dataset의 기본 구성 요소
Dataset은 DataLoader의 대상이 되는 data 인수에 해당한다. PyTorch에서는 2가지 dataset들을 지원한다. - Map-style datasets = Dataset 클래스 - Iterable-style datasets = IterableDataset 클래스 # Custome Dataset 기본 뼈대 Custome Dataset을 만들기 위해서는 torch.utils.data.Dataset 클래스를 상속해서 만든다. from torch.utils.data import Dataset, DataLoader class CustomDataset(Dataset): def __init__(self, text, labels): # 데이터 위치, 파일명 저장 # 데이터 load # 데이터 처리할 ..
2022.01.28