Pytorch tutorial (1)
pytorch 기본 틀
Pytorch tutorial (1)
Pytorch tutorial (1)
파이토치는 클래스를 사용하도록 권고한다. 크게 신경망의 동작을 정의하는 모듈 클래스와 데이터셋을 다루는 데이터셋 클래스가 있다.
파이토치를 사용해 딥러닝 신경망을 학습 하는 기본적인 틀은
- 모듈 클래스를 이용해 신경망을 만들고
- 데이터셋 클래스를 이용해 데이터를 불라와 학습한다.
파이토치의 모듈 클래스는 모두 모듈(nn.Module 클래스)로 구성되어있다.
모듈 클래스의 기본적인 틀
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Net(nn.Module):
def __init__(self):
```
# 신경망 구성요소 정의
```
def forward(self, input):
```
# 신경망 동작 정의
```
return output
nn.Module 클래스는 신경망의 구성요소를 정의하는 __init()__ 함수와 신경망의 동작을 정의하는 forward() 함수로 구성되어 있다.
__init()__ 함수에서 정의한 모듈을 연결하거나 필요한 연산 등을 정의한다.
데이터셋 클래스의 기본적인 틀
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Datsset():
def __init()__(self):
```
# 필요한 데이터 불러오기
```
def __len__(self):
```
# 데이터의 개수 반환
```
return len(data)
def __getitem__(slef, i):
```
# i번째 입력 데이터와
# i번째 정답을 반환
```
return data[i], label[i]
데이터셋 클래스의 구성요소는 __init__(), __len__(), __getitem___() 세 가지 함수이다.
__init__() 함수는 학습에 사용할 데이터를 불러온다.
__len__() 함수는 데이터 개수를 반환한다.
__getitem___() 함수는 지정한 i번째 입력 데이터와 정답을 반환한다.
모듈 클래스와 데이터셋 클래스를 이용한 딥러닝 학습 틀
1
2
3
4
5
6
7
8
9
10
11
12
13
# 데이터로더로부터 데이터와 정답을 받아옴
for data, label in DataLoader():
# 모델의 예측값 계산
prediction = model(data)
# 손실 함수를 이용해 오차 계산
loss = LossFunction(prediction, label)
# 오차 역전파
loss.backward()
# 신경망 가중치 수정
optimizer.step()
파이토치는 학습에 사용할 입력 데이터와 정답을 불러오는 데이터로더를 제공한다.
데이터로더는 데이터셋 클래스를 입력으로 받아서 학습에 필요한 양 만큼의 데이터를 불러온다.
이 데이터로더로부터 데이터와 정답을 불러와 신경망(파이토치 모듈)의 예측값을 계산한다.
즉 딥러닝 학습 틀은 아래의 순서와 같다.
예측값 계산 -> 오차 계산 -> 오차 역전파 -> 가중치 수정
reference - 텐초의 파이토치 딥러닝 특강
This post is licensed under CC BY 4.0 by the author.