Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- PytorchLightning
- GitHub Action
- 프로그래머스
- rnn
- leetcode
- DeepLearning
- Matplotlib
- github
- pep8
- Kubernetes
- wandb
- pytorch
- 백준
- FDS
- FastAPI
- 코딩테스트
- docker
- NLP
- 완전탐색
- GCP
- python
- Kaggle
- 알고리즘
- datascience
- GIT
- 네이버AItech
- autoencoder
- NaverAItech
- vscode
- torchserve
Archives
- Today
- Total
Sangmun
Gradient descent 직접 구현 (python) 본문
네이버 AI 부스트캠프 1주차 심화 과제를 구현하면서 찾아본 내용이다.
https://www.youtube.com/watch?v=KgH3ZWmMxLE&t=335s
import numpy as np
import matplotlib.pyplot as plt
# X값 랜덤 생성 및 방정식 생성
X = np.random.rand(100)
Y = 0.2*X + 0.5
# 랜덤하게 생성된 데이터를 바탕으로 그래프 그리기
plt.figure(figsize=(8,6))
plt.scatter(X,Y)
plt.show()
# 그래프를 그려주는 함수
def plot_prediction(pred,y):
plt.figure(figsize=(8,6))
# target 그래프 그리기
plt.scatter(X,y)
# 학습으로 예측한 그래프 그리기
plt.scatter(X,pred)
plt.show()
W = np.random.uniform(-1,1)
b = np.random.uniform(-1,1)
learning_rate = 0.7
for epoch in range(100):
Y_Pred = W*X + b
# L1 norm
error = np.abs(Y_Pred - Y).mean()
if error < 0.001:
break
# gradient descent 계산
w_grad = learning_rate * ((Y_Pred - Y)*X).mean()
b_grad = learning_rate * (Y_Pred -Y).mean()
# W, b 값 갱신
W = W - w_grad
b = b - b_grad
# 10 epoch 마다 target과 학습된 그래프 그리기
if epoch % 10 == 0:
Y_pred = W*X + b
plot_prediction(Y_Pred,Y)
위 예제에서는 error를 L1 norm으로 구현하였지만 과제는 L2 norm으로 바꿔 구현해보았다.
'네이버 AI 부스트캠프 4기' 카테고리의 다른 글
구글 colab vscode에서 접속하기(ngrok) (0) | 2022.09.29 |
---|---|
Pytorch Project Template (0) | 2022.09.29 |
네이버 AI 부스트캠프 1주차 후기 (0) | 2022.09.25 |
최대우도법 정리(Maximum Likelihood Estimation) (0) | 2022.09.25 |
RNN BPTT(Back Propagation Through Time) (0) | 2022.09.25 |
Comments