파이토치 권고 코딩 스타일
파이토치는 클래스를 사용하도록 권고한다.
크게 신경망의 동작을 정의하는 모듈 클래스와 데이터를 다루는 데이터셋 클래스로 나눌 수 있다.
1. 모듈 클래스를 이용하여 신경망을 만든다.
2. 데이터셋 클래스를 이용해 데이터를 불러와 학습한다.
모듈 클래스
파이토치의 딥러닝 신경망은 모두 모듈로 구성되어있다.
여기서 모듈은 nn.Module 클래스를 의미한다.
class Net(nn.Module):
def __init__(self):
# 신경망 구성 요소 정의
def forward(self, input):
# 신경망 동작 정의
모듈 클래스는 신경망의 구성 요소를 정의하는 __init__() 함수와 신경망의 동작을 정의하는 forward()함수로 구성되어 있다.
파이토치는 미리 정의해둔 신경망 모듈을 제공한다.
파이토치가 제공하는 모듈을 불러와서 __init__() 함수 내부에 정의하고, 여기서 정의한 모듈을 연결하거나 필요한 연산 등을 정의하여 forward() 함수에 신경망의 동작을 정의한다.
데이터셋 클래스
class Dataset():
def __init__(self):
# 필요한 데이터 불러오기
def __len__(self):
# 데이터의 개수 반환
return len(data)
def __getitem__(self, i):
# i번째 입력 데이터와 정답을 반환
return data[i], label[i]
데이터셋 클래스의 구성 요소는 3가지이다.
1. __init__() : 학습에 사용할 데이터를 불러온다.
2. __len__(): 데이터의 개수를 반환한다.
3. __getitem__(): 우리가 지정한 i번째 입력 데이터와 정답을 반환한다.
모듈 클래스와 데이터셋 클래스 이용
for data, label in DataLoader():
# 1. 모델의 예측 값 계산
prediction = model(data)
# 2. 예측값과 실제 값 오차 계산 - 손실 함수
loss= LossFunction(prediction, label)
# 3. 오차 역전파
loss.backward()
# 신경망 가중치 수정 - 옵티마이저
optimizer.step()
파이토치는 학습에 사용할 입력 데이터와 정답을 불러오는 데이터로더를 제공한다.
데이터로더는 데이터셋 클래스를 입력으로 받아서 학습에 필요한 양 만큼의 데이터를 불러오는 역할을 수행한다.
데이터로더로부터 데이터와 정답을 불러와 신경망의 예측값을 계산하고 손실함수를 사용하여 신경망의 오차를 계산한다.
그 후 파이토치의 backward() 메서드를 사용하여 오차를 역전파하고, step() 메서드를 사용하여 신경망의 가중치를 수정한다.

딥러닝 문제를 해결하기 전 확인해야 할 것들 !
1. 풀어야 할 문제 이해하기
- 정확한 값을 예측하는 회귀 문제인가?
- 입력이 속한 범주를 예측하는 분류 문제인가?
2. 데이터 파악하기
- 입력 자료형과 정답 확인하기
- 클래스 간의 불균형은 없는지 확인하기
- 누락된 데이터 혹은 자료형에 맞지 않는 데이터가 포함되어 있는지 확인하기
3. 데이터 전처리
- 학습에 필요한 데이터가 부족하다면 데이터 증강하기
- 데이터를 정규화해서 값의 범위 맞추기
4. 신경망 설계
- 데이터의 공간 정보가 중요하면 합성곱 적용하기
- 데이터의 순서 정보가 중요하다면 RNN 적용하기
5. 신경망 학습
- 적합한 손실함수 찾기
- 가중치 수정을 위한 최적화 정하기
- 신경망의 성능을 평가하기 위한 평가 지표 정하기
6. 손실이 무한대로 발산한다면
- 손실함수 변경해보기
- 데이터에 이상한 값이 섞여있는지 확인하기
- 학습률 줄이기
7. 손실이 0으로 수렴한다면
- 데이터가 부족하지 않은지 확인하기
- 신경망 크기 줄이기
딥러닝에 필요한 통계 개념
1. 종속 변수와 독립 변수
독립 변수는 다른 변수에 영향을 받지 않으며, 결괏값을 결정하는 변수를 의미한다.
ex) 모델의 입력, 입력 벡터, 입력 데이터, 입력 텐서 등
종속 변수는 독립 변수에 의해 값이 결정되는 변수를 의미한다. 쉽게 말해 딥러닝 모델의 출력이 되는 변수라고 할 수 있다.
ex) 모델의 예측값, 모델의 출력 등

1. 평균과 분산
평균은 모든 데이터의 합을 데이터 수로 나눈 값을 의미한다.
정규 분포와 같이 종형 분포를 갖는 확률 분포에서 랜덤하게 데이터를 뽑았을 때, 평균에 가까운 값이 나올 확률이 가장 크다는 것을 의미한다.
분산은 데이터가 얼마나 퍼져쓴가를 나타내는 지표이다.
분산이 크다는 것은 평균으로부터 넓게 흩어져있는 데이터가 많다는 것을 의미하고, 분산이 작다는 것은 평균 근처에 데이터가 몰려있다는 것을 의미한다.
이 때 분산의 양의 제곱근을 표준편차라고 부른다.

파이토치를 공부하기 위해서 텐초의 파이토치 딥러닝 특강 책을 사용했다.!
도서관에서 빌릴 수 있는 책 중에서 딥러닝 + 파이토치 조합으로 되어있는 책으로 골랐다.
위의 내용 그리고 앞으로의 내용도 아래 글이랑 해당 책을 참고할 예정이다.
[10초면 OK] 딥러닝 입문자가 꼭 알아야 하는 4+1가지 : 프로세스, 체크리스트, 통계 개념, 시각화,
코로나보드의 프론트엔드와 백엔드의 전체적인 아키텍처를 파악하고, 이러한 아키텍처로 설계된 이유를 알아봅니다.
goldenrabbit.co.kr
'2025 학부 인턴 > CV' 카테고리의 다른 글
| CNN의 구조 (0) | 2025.12.15 |
|---|---|
| CNN 등장 배경 (0) | 2025.12.15 |
| 옵티마이저 : Optimizer (0) | 2025.12.15 |
| 손실 함수 : Loss Function (0) | 2025.12.14 |
| 활성화 함수 : Activation Function (0) | 2025.12.14 |