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)
- 레이어 연결 - 모델링
- 모델 인스턴스 호출 시 실행
- 모델 결과값 추론
모델 학습 코드
- 모델 인스턴스.to(divice)
- criterion 오차(cost) 계산 함수 선언
- Adam 기울기(optimizer) 알고리즘 선언
- training 이중 for문: epoch loop -> dataloader loop
- X, Y, .to(device)
- optimizer. zero_grad()
- grad 초기화 (기울기 초기화) - model(X)
- 추론 - criterion(hyposhesis, Y)
- 오차 계산 - cost. backward()
- gradient 계산 - optimizer. step()
- weight 업데이트 - evaluation : with no_grad():
- 추론
- 평가
Tags:
AI개발_교육