1. 파이토치
프레임워크 종류
딥러닝 모델에는 수많은 알고리즘이 있습니다.
데이터 처리, 이미지처리, 가중치계산 등 만들어야 할 알고리즘이 한두개가 아닙니다.
하나 하나 직접만들기에는 무리가 있기 때문에 프레임워크를 사용하여 만들 수 있습니다.
대표적인 프레임워크는 텐서플로, 케라스. 파이토치 가 있습니다.
저는 개인적으로 파이토치를 사용 하고 있습니다.
왜 파이토치 인가?
어떤 프레임워크가 점유율이 높을까? 생각해보면 답이 있습니다.
현재 파이토기가 가장 큰 점유율을 보이고 있으며 대형회사부터 대학 연구실까지 많은 사람이 이용하고 있습니다.
파이토치 코드는 파이썬 본래의 코드와 유사해 직관적이라는 장점도 있으며,
처음 딥러닝을 접하는 사람에게는 파이토치가 좋다고 생각 합니다.
물론 특정 업무나 특성 때문에 텐서플로우가 필요 할 수도 있지만, 파이토치를 먼저 익히고 텐서플로우를 접하는 것을
저는 강력하게 추천합니다.
2. 파이토치 권고 코딩 스타일
파이토치는 클래스를 사용하도록 권고 하고 있습니다.
크게 보면,
- 신경망의 동작을 정의하는 모듈클래스
- 데이터를 다루는 데이터셋 클래스
- 모듈클래스와 데이터셋 클래스를 이용한 딥러닝 학습
즉, 모듈클래스를 이용해 신경망을 만들고, 데이터셋 클래스를 이용해 데이터를 불러와 학습하면 됩니다.
파이토치의 딥러닝 신경말은 모두 모듈(nn.Module) 로 구성되어 있습니다.
- 모듈 클래스의 기본적인 뼈대
class Net(nn.Module):
def __init__(self):
'''
# 신경망 구성요소 정의
'''
def forward(self, input):
'''
# 신경망의 동작 원리
'''
return output
- 데이터를 다루는 데이터셋 클래스
1. __init__() 함수는 학습에 사용할 데이터를 불러오기
2. __len__() 함수는 데이터 개수를 반환
3. __getitem__() 함수는 우리가 지정한 i 번째 입력데이터와 정답을 반환
class Dataset():
def __init__(self):
'''
# 필요한 데이터 불러오기
'''
def __len__(self):
'''
# 데이터의 개수 반환
'''
return len(data)
def getitem(self, i):
'''
# i 번째 입력 데이터와
# i 번째 정답을 반환
'''
return data[i], label[i]
- 모듈클래스와 데이터셋 클래스를 이용한 딥러닝 학습
# 데이터로더에서 데이터와 정답을 받아옴
for data, label in DataLoader():
# 1. 모델의 예측값 계산
prediction = model(data)
# 2. 손실 함수를 이용해 오차 계산
loss = LossFuntion(prediction, label)
# 3. 오차 역전파
loss.backward()
# 4. 신경망 가중치 수정
optimizer.step()
파이토치 프레임워크 소개와
파이토치의 뼈대가 되는 클래스 2개와 학습하는 코드를 간단히 보았습니다.
위의 코드를 사용하여 학습하는 방법은 추후 포스팅 하겠습니다.
감사합니다.
'AI > 딥러닝' 카테고리의 다른 글
[Ch.01] 04 - 다중 분류 Mnist (0) | 2023.01.03 |
---|---|
[Ch.01] 03 - Pytorch 를 활용한 간단한 회귀분석 (0) | 2023.01.02 |
[Ch.01] 01 - 딥러닝 이란? (1) | 2022.12.30 |
순환 신경망 (RNN) 이란? - BPTT [3편] (0) | 2022.03.13 |
순환 신경망 (RNN) 이란? [2편] (0) | 2022.03.11 |
댓글