Linear Regression์ ์๋ฆฌ์ ๋ํด ๊ฐ๋ณ๊ฒ ์์๋ดค์ผ๋, tensorflow๋ฅผ ํตํด ๊ฐ๋จํ Linear Regression์ ๊ตฌํํด๋ณด๊ณ ์ ํ๋ค.
์ง๋ ๋ฒ์ ์ฌ์ฉํ๋
๊ฐ์ ์ฌ์ฉํ๊ณ ์ ํ๋ค.
import tensorflow as tf
x_train = [1,2,3] #ํ์ตํ x๊ฐ
y_train = [1,2,3] #ํ์ตํ y๊ฐ
#Tensorflow ๊ฐ ์ฌ์ฉํ๋ Variable : Tensorflow๊ฐ ์์ฒด์ ์ผ๋ก ๋ณํ์ํค๋ ๋ณ์ _ ํ์ตํ๋ ๊ณผ์ ์์ ๋ณ๊ฒฝ์ํด
W = tf.Variable(tf.random.normal([1]), name = 'weight') # Weight
#๊ฐ์ด ํ๋์ธ array๋ฅผ ์ฃผ๊ฒ ๋จ
b = tf.Variable(tf.random.normal([1]), name = 'bias') #Bias
์ฐ์ x๊ฐ๊ณผ y ๊ฐ์ด ์๋ train data๋ฅผ ์ ๋ ฅํด์ฃผ๊ณ , ๊ฐ์ค์น(Weight)๊ฐ ๋ W์ ํธํฅ์น(Bias)๊ฐ ๋ b๊ฐ์ ๋๋ค์ผ๋ก ์ค์ ํด์ค๋ค. (์ด์ฐจํผ W,b ๊ฐ์ ํ์ต์ ๋ฐ๋ณตํ๋ฉฐ ์ต์ ํ๋ ์ซ์๋ก ์ ํฉํด๊ฐ ๊ฒ์ด๋ค.)
๊ทธ ํ ,
# Only in Tensorflow 1.0
hypothesis = x_train * W + b
cost = tf.reduce_mean(tf.square(hypothesis - y_train))
optimizer = tf.train.GradientDescentOptimizer(learning_rate = 0.01)
train = optimizer.minimize(cost)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for step in range(2001):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(cost), sess.run(W), sess.rub(b))
์ด ์ฝ๋๋ฅผ ๋ฐ๋ก ์คํํ๊ฒ ๋๋ฉด ๋ง์ ์ค๋ฅ๊ฐ ์๊ธด๋ค.
GradientDescentOptimizer, minimze, Session ๋ฑ์ ํจ์ ๊ตฌ์ฑ์ด Tensorflow 1.0 ๋ฒ์ ์ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๊ตฌ๊ธ๋ง์ ํ๋ฉด, ๋ค๋ฅธ ๋ฐฉ์ (Keras) ๋ฅผ ์ฌ์ฉํด์ ๊ตฌํ๋ ๋ฐฉ์๋ค์ ์์์ง๋ง, cost ํจ์๋ฅผ ๊ตฌ์ฑํ๊ณ ๋ฐ๋ณต๋ฌธ์ ํตํด W์ b๋ฅผ ์ง์ ์ ๋ฐ์ดํธ ํ๋ ๋ฐฉ์๋ค์ ๋ง์ง ์์๋ค.
๋คํํ๋ function์ ๊ตฌ์ฑํ์ฌ W์ b ๊ฐ์ ๊ฐฑ์ ํ๋ ์ฝ๋๊ฐ ์์ด์ ์ฐธ๊ณ ํ์ฌ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์๋ค.
#Tensorflow 2.0
## Hypothesis ์ค์
@tf.function
def hypothesis(x):
return W*x + b
## Cost Function ๊ณ์ฐ
@tf.function
def cost(pred, y_train):
return tf.reduce_mean(tf.square(pred - y_train))
## ์ต์ ํ
optimizer = tf.optimizers.SGD(learning_rate = 0.01)
## ์ต์ ํ ๊ฐฑ์ ๊ณผ์
@tf.function
def optimization():
with tf.GradientTape() as g:
pred = hypothesis(x_train)
loss = cost(pred, y_train)
gradients = g.gradient(loss, [W,b])
optimizer.apply_gradients(zip(gradients, [W,b]))
## ์ต์ ํ ๋ฐ๋ณต
for step in range(1, 2001):
optimization()
#20 ํ๋ง๋ค ๊ฐฑ์ ๊ฐ ํ๋ฆฐํธ
if step % 20 == 0:
pred = hypothesis(x_train)
loss = cost(pred, y_train)
tf.print(step,loss, W, b)
ํ์ฐจ๋ฅผ ๋ฐ๋ณตํ ์๋ก, Cost์ ๊ฐ์ด ๋งค์ฐ ์์ ๊ฐ์ผ๋ก ์๋ ดํ์๊ณ , W ๊ฐ์ 1๋ก, b๊ฐ์ 0์ผ๋ก ์๋ ดํ๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
์ฆ, H(x) = 1 x + 0 ์ด๋ผ๋ ์์ ๊ฐ๊น์์ง๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
'DataScience > Machine Learning Basic' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Multivariable linear regression (0) | 2022.02.21 |
---|---|
Linear Regression Cost Function & Gradient Descent Algorithm (0) | 2022.02.20 |
Linear Regression (0) | 2022.01.25 |
Tensorflow ๊ธฐ๋ณธ Operation (0) | 2022.01.21 |
Tensorflow in Pycharm ๊ทธ๋ฆฌ๊ณ Google Colab (0) | 2022.01.21 |