# 세줄요약 #
- 선형회귀분석은 주어진 데이터의 경향성을 잘 나타내는 선형관계를 찾아내는 것을 의미하는데, 간단한 예로는 y=wx+b 방정식에서 데이터 x, y를 가장 잘 표현하는 변수 w, b를 찾는 것이다(w: weight, b: bias).
- 예측값과 목표값의 차이인 오차를 나타내는 손실함수(Loss function)를 구하고, 경사하강법(gradient descent)을 사용하여 가중치(weight)를 업데이트하며 오차의 최솟값을 찾는 과정이 바로 학습(Learning)이다.
- 파이토치에서는 데이터 기본 단위로 "tensor"를 사용하여, "torch.nn" 라이브러리에서 신경망 모델과 손실함수를 설계하고, "torch.optim" 라이브러리에서 경사하강법 알고리즘을 선택해 학습을 수행한다.
#code block#
###########################
# Linear Regression Model #
###########################
# Library Import
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.init as init
import matplotlib.pyplot as plt
# Data Create
num_data = 1000
num_epoch = 500
x = init.uniform_(torch.Tensor(num_data, 1), -10, 10)
noise = init.normal_(torch.FloatTensor(num_data, 1), std=1)
y = 2*x+3
y_noise = 2*(x+noise)+3
# Model Build
model = nn.Linear(1,1)
loss_func = nn.L1Loss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# Model Running
for i in range(num_epoch):
optimizer.zero_grad()
output = model(x)
loss = loss_func(output, label)
loss.backward()
optimizer.step()
if i%10 == 0:
print(loss.data)
param_list = list(model.parameters())
print(param_list[0].item(), param_list[1].item())
# Result Check
plt.figure(figsize=(15,15))
plt.scatter(x.numpy(),y_noise.numpy(),s=7,c="gray")
plt.scatter(x.detach().numpy(),output.detach().numpy(),s=2,c="red")
plt.axis([-10, 10, -30, 30])
plt.show()
* 출처: 파이토치 첫걸음 / 최건호 / 한빛미디어
728x90
728x90
'교재 리뷰 > 파이토치 첫걸음' 카테고리의 다른 글
파이토치 첫걸음 - 5. 합성곱 신경망 (0) | 2019.11.18 |
---|---|
파이토치 첫걸음 - 4. 인공 신경망 (0) | 2019.11.18 |
파이토치 첫걸음 - 2. 파이토치 (0) | 2019.10.15 |
파이토치 첫걸음 - 1. 딥러닝에 대하여 (0) | 2019.10.08 |
파이토치 첫걸음 - 개요 (0) | 2019.10.08 |
댓글