Post

Pytorch tutorial (1)

pytorch 기본 틀

Pytorch tutorial (1)

Pytorch tutorial (1)

파이토치는 클래스를 사용하도록 권고한다. 크게 신경망의 동작을 정의하는 모듈 클래스와 데이터셋을 다루는 데이터셋 클래스가 있다.

파이토치를 사용해 딥러닝 신경망을 학습 하는 기본적인 틀은

  1. 모듈 클래스를 이용해 신경망을 만들고
  2. 데이터셋 클래스를 이용해 데이터를 불라와 학습한다.

파이토치의 모듈 클래스는 모두 모듈(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.