1) 손글씨 문자를 판별하는 MLP 작성
# 라이브러리 불러오기 import torch from torch import nn |
# 네트워크 구성 net = nn.Sequential( nn.Linear(64, 32), nn.ReLU(), nn.Linear(32, 16), nn.ReLU(), nn.Linear(16, 10) ) |
2) 손글씨 문자 데이터의 학습 코드의 나머지 부분
# 라이브러리 및 데이터 불러오기 import torch from torch import nn, optim from sklearn.datasets import load_digits digits = load_digits() |
|
# 독립변수, 종속변수 분리 X = digits.data Y = digits.target |
|
# Numpy의 ndarray를 파이토치의 텐서로 변환 X = torch.tensor(X, dtype=torch.float32) Y = torch.tensor(Y, dtype=torch.int64) |
|
# 소프트맥스 크로스 엔트로피 loss_fn = nn.CrossEntropyLoss() |
|
# Adam optimizer = optim.Adam(net.parameters()) |
|
# 손실 함수의 로그 losses = [] |
|
# 100회 반복 for epoc in range(100): # backward 메서드로 계산된 이전 값을 삭제 optimizer.zero_grad()
# 선형 모델로 y의 예측 값 게산 y_pred = net(X)
# MSE loss와 w를 사용한 미분 계산 loss = loss_fn(y_pred, Y) loss.backward()
# 경사를 갱신 optimizer.step()
# 수령 확인을 위해 loss를 기록해 둔다. losses.append(loss.item()) print(loss.item()) |
3) to 메서드를 이용해 GPU로 전송
X = X.to("cuda:0") # 이후 처리는 동일하게 optimizer를 설정해서 학습 루프를 돌린다. |
'인공지능 > 파이토치' 카테고리의 다른 글
파이토치 - Dropout과 Batch Normalization (0) | 2020.07.20 |
---|---|
파이토치 - Dataset과 DataLoader (0) | 2020.07.20 |
파이토치 - 로지스틱 회귀 (0) | 2020.07.20 |
파이토치 - 선형 회귀 모델 (0) | 2020.07.20 |
파이토치 - 텐서 / 자동 미분 (0) | 2020.07.18 |