Lec-02 Simple Liner Regression LAB
>> Hypothesis and Cost
Hypothesis
Cost
- cost가 최소화 되는 W와 b값을 구하는 것을 학습이라고 할 수 있음.
cost function을 tesorflow로 어떻게 옮길까?
x_data = [1,2,3,4,5]
y_data = [1,2,3,4,5]
W = tf.Variable(2.9) b = tf.Variable(0.5)
hypothesis = W * x_data + b
cost(W,b) cost = tf.reduce_mean(tf.square(hypothesis - y_data))
: 입력과 출력 x와 y값이 같으려면 W값은 1, b값은 0이 되어야 한다.
tf.reduce_mean() v = [1., 2., 3., 4.] tf.reduce_mean(v) #2.5
tf.square() tf.square(3) #9
Gradient descent (=경사 하강 알고리즘)
: minimize cost(W,b)
: learning_rate = 0.01
# 변수(W,b)에 대한 정보 tape에 기록_ with tf.GradientTape() as tape: hypothesis = W * x_data + b cost = tf.reduce_mean(tf.square(hypothesis - y_data))
#기울기 값 즉 미분값을 구함._ W_grad, b_grad = tape.gradient(cost, [W,b])
W.assign_sub(learning_rate * W_grad) b.assign_sub(learning_rate * b_grad)
- A.assign_sub(B)
: A = A - B
: A-=B
Full Code
import tensorflow as tf
#Data
x_data = [1,2,3,4,5]
y_data = [1,2,3,4,5]
# W, b initialize
W = tf.Variable(2.9)
b = tf.Variable(0.5)
learning_rate = 0.01
for i in range(100+1): # W, b update
# Gradient descent
with tf.GradientTape() as tape:
hypothesis = W * x_data + b
cost = tf.reduce_mean(tf.square(hypothesis - y_data))
W_grad, b_grad = tape.gradient(cost, [W,b])
W.assign_sub(learning_rate * W_grad)
b.assign_sub(learning_rate * b_grad)
if i % 10 == 0:
print("{:5}|{:10.4f}|{:10.4}|{:10.6f}".format(i, W.numpy(), b.numpy(), cost))
Colab을 사용하여 실행해본 코드 결과
Author And Source
이 문제에 관하여(Lec-02 Simple Liner Regression LAB), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lybin10/Simple-Liner-Regression-LAB저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)