ESL 연구실 활동/LAB

Pytorch 입문 - 선형회귀

천숭이 2022. 1. 20. 12:52

https://wikidocs.net/book/2788

 

PyTorch로 시작하는 딥 러닝 입문

이 책은 딥 러닝 프레임워크 PyTorch를 사용하여 딥 러닝에 입문하는 것을 목표로 합니다. 이 책은 2019년에 작성된 책으로 비영리적 목적으로 작성되어 출판 ...

wikidocs.net

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim

# 같은 결과를 위한 랜덤시드 설정
torch.manual_seed(1)

x_train = torch.FloatTensor([[1] ,[2], [3]])
y_train = torch.FloatTensor([[2] ,[4], [6]])

print("x_train : ")
print(x_train)
print(x_train.shape)  # 3행1열

# 가중치 w를 0으로 초기화하고 학습을 통해 변경되는 변수임을 명시
W = torch.zeros(1, requires_grad=True)  # torch.zeros(size, out)
print("W :")
print(W)  # tensor([0.], requires_grad=True)

# 편향 b도 0으로 초기화
b = torch.zeros(1, requires_grad=True)




# 경사하강법 SGD 구현. 가중치와 편향이 입력값이 된다
optimizer = optim.SGD([W, b], lr = 0.01)

nb_epochs = 1999

for epoch in range(nb_epochs + 1):
    # 가설세우기 = 직선 만들기
    hypothesis = x_train * W + b
    # print("hypotesis : ")
    # print(hypothesis)

    # 비용함수 = 오차함수 선언
    cost = torch.mean((hypothesis - y_train) ** 2)
    # print("cost : ")
    # print(cost)  # 가중치와 편향이 모두 0일때는 그냥 음수값

    optimizer.zero_grad() # 기울기 초기화. 새로운 가중치 편향에 대해 새로운 기울기 구할 수 있다
    cost.backward() # 비용함수 미분해 기울기 계산
    optimizer.step() # 가중치와 편향 업데이트

    # 100번마다 로그 출력
    if epoch % 100 == 0:
        print('Epoch {:4d}/{} W: {:.3f}, b: {:.3f} Cost: {:.6f}'.format(
            epoch, nb_epochs, W.item(), b.item(), cost.item()
        ))

x_train : 

tensor([[1.],
        [2.],
        [3.]])
torch.Size([3, 1])
W :
tensor([0.], requires_grad=True)
Epoch    0/1999 W: 0.187, b: 0.080 Cost: 18.666666
Epoch  100/1999 W: 1.746, b: 0.578 Cost: 0.048171
Epoch  200/1999 W: 1.800, b: 0.454 Cost: 0.029767
Epoch  300/1999 W: 1.843, b: 0.357 Cost: 0.018394
Epoch  400/1999 W: 1.876, b: 0.281 Cost: 0.011366
Epoch  500/1999 W: 1.903, b: 0.221 Cost: 0.007024
Epoch  600/1999 W: 1.924, b: 0.174 Cost: 0.004340
Epoch  700/1999 W: 1.940, b: 0.136 Cost: 0.002682
Epoch  800/1999 W: 1.953, b: 0.107 Cost: 0.001657
Epoch  900/1999 W: 1.963, b: 0.084 Cost: 0.001024
Epoch 1000/1999 W: 1.971, b: 0.066 Cost: 0.000633
Epoch 1100/1999 W: 1.977, b: 0.052 Cost: 0.000391
Epoch 1200/1999 W: 1.982, b: 0.041 Cost: 0.000242
Epoch 1300/1999 W: 1.986, b: 0.032 Cost: 0.000149
Epoch 1400/1999 W: 1.989, b: 0.025 Cost: 0.000092
Epoch 1500/1999 W: 1.991, b: 0.020 Cost: 0.000057
Epoch 1600/1999 W: 1.993, b: 0.016 Cost: 0.000035
Epoch 1700/1999 W: 1.995, b: 0.012 Cost: 0.000022
Epoch 1800/1999 W: 1.996, b: 0.010 Cost: 0.000013
Epoch 1900/1999 W: 1.997, b: 0.008 Cost: 0.000008

Process finished with exit code 0

'ESL 연구실 활동 > LAB' 카테고리의 다른 글

오늘 한 거  (0) 2022.01.26
혼공머 스터디 (1~2장)  (0) 2022.01.25
컴구 운체 강의 추천  (0) 2022.01.23
Pythorch 입문 - 다중회긔  (0) 2022.01.20
[Dacon Basic] 영화 리뷰 감정분석 경진대회  (0) 2022.01.19
임베디드 공부팁 (from 안)  (0) 2022.01.16