pytorch 모델 훈련

import torch.nn.init

self.flatten = nn.Flatten()

# 28*28 이미지를 선형으로 만든다.
# (fc, 완전연결구조)로, 한 줄로 쭉 펴준다.

criterion = torch.nn.CrossEntropyLoss()   

# criterion = 비용(오차) 함수

# 비용(오차) 함수에 소프트맥스 함수 포함되어져 있음.

optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)

# optimizer = weight를 업데이트 한다.

# Adam 옵티마이저: 기울기 최적화가 된 이후에도 기울기를 계속 바꿔가면서 찾는 알고리즘.


딥러닝 기초 요약

다층 퍼셉트론

Optimizer : weight 업데이트

기본적인 Gradient Decent 알고리즘(SGD) -> Momentum, RMSprop -> Adam -> AdamW

Cost 함수

CrossEntropyLoss, BCELoss (log loss)

epoch, batch

같은 데이터 반복, 한 번에 돌리는 양 -> weight 업데이트 회수 결정


pytorch 기초 모듈, 함수 정리

  • Dataset 클래스 : custom Dataset 클래스 선언 시 필요

  • Dataloader 클래스 : 배치 처리, 등등 데이터 처리 기능 지원

  • transforms : 데이터 전처리 모듈 지원


모델 클래스 직접 선언

  • __init__(self)
    • 필요한 레이어 선언
    • 모델 인스턴스 생성 시 실행

  • forward(self, x)
    • 레이어 연결 - 모델링
    • 모델 인스턴스 호출 시 실행
    • 모델 결과값 추론


모델 학습 코드

  1. 모델 인스턴스.to(divice)

  2. criterion 오차(cost) 계산 함수 선언

  3. Adam 기울기(optimizer) 알고리즘 선언

  4. training 이중 for문: epoch loop -> dataloader loop
    1. X, Y, .to(device)
    2. optimizer. zero_grad()
         - grad 초기화 (기울기 초기화)
    3. model(X)
         - 추론
    4. criterion(hyposhesis, Y)
         - 오차 계산
    5. cost. backward()
         - gradient 계산
    6. optimizer. step()
         - weight 업데이트

  5. evaluation : with no_grad():
    1. 추론
    2. 평가

댓글 쓰기

다음 이전