일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 딥러닝
- pytorch
- 해리스 코너 검출
- 미디언 필터링
- 모두의 딥러닝 예제
- 딥러닝 공부
- 모두의 딥러닝
- 골빈해커
- 영상처리
- pytorch zero to all
- 팀프로젝트
- 딥러닝 스터디
- c++공부
- 김성훈 교수님 PyTorch
- 컴퓨터 비전
- matlab 영상처리
- tensorflow 예제
- c언어 정리
- 파이토치 김성훈 교수님 강의 정리
- 가우시안 필터링
- MFC 프로그래밍
- TensorFlow
- 파이토치
- object detection
- c++
- Pytorch Lecture
- 케라스 정리
- C언어 공부
- c언어
- 파이토치 강의 정리
- Today
- Total
ComputerVision Jack
PyTorch Lecture 05 : Linear Regression in the PyTorch way 본문
PyTorch Lecture 05 : Linear Regression in the PyTorch way
JackYoon 2020. 10. 7. 16:56PyTorch Rhythm
이번 강의에선 파이토치를 통해 선형 모델 학습을 진행하셨습니다. 파이토치 또한 tensorflow 라이브러리 처럼 학습 관련한 데이터와 모델을 정의하고, 손실 함수를 최적화 시키면서 학습을 진행 시키는 방향으로 나아갑니다.
- Design your model using class with Variables
- Construct loss and optimizer
- Training cycle
[05.Linear_regression.py]
from torch import nn
import torch
from torch import tensor
# torch 관련한 라이브러리를 import 합니다. network와 tensor 사용을 위한 과정입니다.
x_data = tensor([[1.0], [2.0], [3.0]])
y_data = tensor([[2.0], [4.0], [6.0]])
# 사용할 데이터를 준비합니다. 데이터 shape은 [3 x 1] tensor 입니다. 각각 x와 y 데이터가 1대1로 매칭됩니다.
class Model(nn.Module):
def __init__(self):
super(Model, self).__init__()
self.linear = torch.nn.Linear(1, 1)
def forward(self, x):
y_pred = self.linear(x)
return y_pred
# 우리가 사용할 모델을 클래스화하여 생성합니다.
생성자를 통해 linear 모델을 생성하고, linear 모델에 대한 forward 연산을 클래스 내부에 정의해 놓습니다.
model = Model()
# 정의한 모델 클래스에 대한 객체를 생성합니다.
criterion = torch.nn.MSELoss(reduction = 'sum')
optimizer = torch.optim.SGD(model.parameters(), lr= 0.01)
# 그 다음 오차 함수를 설정합니다. MSE 오차를 사용합니다.
그 다음 SGD 알고리즘을 통해 MSE 오차에 대해 learning_rate 0.01로 최적화 합니다.
for epoch in range(500):
y_pred = model(x_data)
loss = critierion(y_pred, y_data)
print(f'Epoch : {epoch} | Loss : {loss.item()}')
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 500번의 반복을 통해 학습을 진행합니다.
우선 model에 x_data를 넣어 y_pred를 추출합니다. forward() 방식
그렇게 결과로 나온 y_pred와 y_data를 비교하여 오차를 추출합니다. 또한 반복 횟수에 대한 오차를 출력합니다.
아마 학습이 진행 될 수록 오차가 감소될 것입니다.
그다음 backward() 방식으로 최적화를 진행합니다.
hour_var = tensor([[4.0]])
y_pred = model(hour_val)
print('Prediction (after training)', 4, model(hour_var).data[0][0].item())
# 학습된 모델에 이제 예측을 통한 변수를 던져줍니다. 아마 4.0을 모델에 입력하면 8.0에 근접한 갑이 추출될 것입니다.
'DeepLearning > Pytorch_ZeroToAll' 카테고리의 다른 글
PyTorch Lecture 07 : Wide and Deep (0) | 2020.10.20 |
---|---|
PyTorch Lecture 06 : Logistic Regression (0) | 2020.10.12 |
PyTorch Lecture 04 : Back-propagation and Autograd (0) | 2020.10.06 |
PyTorch Lecture 03 : Gradient Descent (0) | 2020.09.16 |
PyTorch Lecture 02 : Linear Model (0) | 2020.09.15 |