Pytorch를 사용한 선형 회귀를 Google Colaboratory에서 구현해보기
기계 학습 라이브러리의 Pytorch를 사용하여 선형 회귀를 구현해 보겠습니다.
간단하기 때문에 기계 학습의 입문으로서 최적입니다.
Pytorch란?
페이스 북의 인공 지능 연구 그룹에 의해 초기 개발 된 파이썬 용 오픈 소스 기계 학습 라이브러리입니다. 읽는 방법은 파이 토치입니다.
Deep Learning 도서관 중에서도 최근 몇 년 동안 인기가 있습니다. 매우 간단하게 기술할 수 있으므로 추천입니다.
Google Colaboratory란?
Google에서 제공하는 무료로 사용할 수 있는 파이썬 실행 환경입니다.
GPU도 사용할 수 있고 기계 학습에 필요한 라이브러리도 미리 설치되어 있습니다. 로컬에서 머신러닝 환경을 구축하는 것은 힘들기 때문에 이번에는 Google 공동체를 사용해 보겠습니다.
사용법은 아래 참조. 1분 정도로 사용할 수 있게 됩니다.
htps : // 코 m / 쇼지 9x9 / ms / 0 f0f6f603df18d631 b
선형 회귀를 구현해보기
필요한 라이브러리를 설치합니다.
import torch
from torch import nn
import matplotlib.pyplot as plt
import numpy as np
무작위 분포 모델을 만들어 플롯해 봅시다.
이 그림에 대해 선형 회귀합니다.
x = torch.randn(100, 1) * 10
y = x + torch.randn(100, 1) * 3
plt.plot(x.numpy(), y.numpy(), "o")
plt.ylabel("y")
plt.xlabel("x")
실행해 보면 아래 그림이 출력되었다고 생각합니다.
선형 회귀의 모델을 정의합니다. nn.Module을 상속하고 init 내에서 입력 및 앱풋 크기를 지정하는 모델을 정의합니다.
class LR(nn.Module):
def __init__(self, input_size, output_size):
super().__init__()
self.linear = nn.Linear(input_size, output_size)
def forward(self, x):
pred = self.linear(x)
return pred
난수의 seed를 고정합니다. 선형 회귀 모델의 인스턴스를 만듭니다.
torch.manual_seed(1)
model = LR(1, 1)
모델의 파라미터를 꺼내는 함수를 정의.
[w, b] = model.parameters()
def get_params():
return (w[0][0].item(), b[0].item())
플롯할 함수를 정의합니다. 모델에서 매개 변수를 검색하여 y1을 정의합니다.
def plot_fit(title):
plt_title = title
w1, b1 = get_params()
x1 = np.array([-30, 30])
y1 = w1*x1 + b1
plt.plot(x1, y1, "r")
plt.scatter(x, y)
plt.show()
학습 전 그림을 플롯해 봅시다. 학습 전이므로 빨간 선이 어긋나있는 것을 알 수 있습니다.
plot_fit("initial Model")
그럼 배우기 전 준비입니다.
손실 함수는 제곱 평균 오차, 학습 방법은 확률적 그라디언트 강하 방법으로 정의됩니다. 학습 속도는 0.01입니다.
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr = 0.01)
그럼 배우자! 에포크는 100입니다. loss를 기록해 둡니다.
epochs = 100
losses = []
for i in range(epochs):
y_pred = model.forward(x)
loss = criterion(y_pred, y)
print("epoch:", i, "loss:", loss.item())
losses.append(loss)
optimizer.zero_grad()
loss.backward()
optimizer.step()
학습 경과를 살펴보자.
plt.plot(range(epochs), losses)
plt.ylabel("Loss")
plt.xlabel("epoch")
학습할 수 있는 것을 알 수 있다고 생각합니다.
학습 후 그림을 플롯해 봅시다.
plot_fit("Trained Model")
제대로 학습되어 있는 것을 알 수 있다고 생각합니다.
이상입니다. 수고하셨습니다!
pytorch를 사용하여 선형 회귀를 학습해 보았습니다. Pytorch와 Google Colaboratory를 사용하면 꽤 쉽게 기계 학습을 경험할 수 있으므로 꼭 여러분도 시도해보십시오! !
Reference
이 문제에 관하여(Pytorch를 사용한 선형 회귀를 Google Colaboratory에서 구현해보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/harker/items/f6948588f82613eff89d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)