2024. 3. 3. 21:53ㆍ딥러닝 모델: 파이토치
소프트맥스 회귀를 F.cross_entropy를 사용해서 구현해보자.
♣ 훈련 데이터와 레이블을 텐서로 선언하기
x_train 의 각 샘플은 4가지 특성을 가지고 있으며 총 8개의 샘플이 존재한다. y_train은 각 샘플에 대한 레이블인데, 0, 1, 2 의 값을 가지는 것으로 보아 총 3개의 클래스가 존재한다.
♣ 소프트맥스 회귀 구현하기(로우 레벨)
x_train 의 크기는 8×4 이며 y_train의 크기는 8 × 1 이다. 최종 사용할 레이블은 y_train에서 원-핫 인코딩을 한 결과값이어야 한다. 클래스의 수가 3개이므로 y_train에 원-핫 인코딩한 결과는 8 × 3 의 개수를 가져야 한다.
y_train에 원-핫 인코딩을 한 결과인 y_one_hot의 크기는 8 × 3 이다. 즉 W 행렬의 크기는 4×3 이어야 한다. (x*W = y 이니까) W와 b를 선언하고, 옵티마이저로 경사하강법을 사용하자. 그리고 학습률은 0.1로 설정한다.
F.softmax( )와 torch.log( )를 사용하여 가설과 비용 함수를 정의하고, 총 1000번의 epoch를 수행한다.
♣ 소프트맥스 회귀 구현하기(하이 레벨)
이제는 F.cross_entropy( )를 사용하여 비용 함수를 구현해보자. 주의할 점은 F.cross_entropy( ) 는 그 자체로 소프트맥스 함수를 포함하고 있으므로 가설에서 소프트맥스 함수를 사용할 필요가 없다는 것이다. 또한 F.cross_entropy( )는 F.nll_loss() 를 포함하기 때문에 원-핫 인코딩을 할 필요도 없다. 위와 동일한 x_train과 y_train을 사용한다.
♣ 소프트맥스 회귀 nn.Module로 구현하기
이번에는 nn.Module로 소프트맥스 회귀를 구현해보자. 선형 회귀에서 구현에 사용했던 nn.Linear( )를 사용한다.
output_dim=1이었던 선형 회귀 때와 달리 output_dim은 이제 클래스의 개수여야 한다.
♣ 소프트맥스 회귀를 클래스로 구현하기
'딥러닝 모델: 파이토치' 카테고리의 다른 글
Pytorch로 시작하는 딥러닝 입문(06-01. 인공신경망: 머신 러닝 용어 이해하기) (0) | 2024.03.06 |
---|---|
Pytorch로 시작하는 딥러닝 입문(05-04. 소프트맥스 회귀로 MNIST 데이터 분류하기) (0) | 2024.03.06 |
Pytorch로 시작하는 딥러닝 입문(05-02. 소프트맥스 회귀 이해하기) (0) | 2024.03.02 |
Pytorch로 시작하는 딥러닝 입문(05-01. 원-핫 인코딩/One-Hot Encoding) (0) | 2024.03.01 |
Pytorch로 시작하는 딥러닝 입문(04-04. 클래스로 파이토치 모델 구현하기) (0) | 2024.02.29 |