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를 사용하면 꽤 쉽게 기계 학습을 경험할 수 있으므로 꼭 여러분도 시도해보십시오! !

좋은 웹페이지 즐겨찾기