본문 바로가기

잡다한 IT/머신러닝 & 딥러닝

02-1 Linear Regression

■  Linear Regression


▶ 난수의 사용

tf.set_random_seed(777)

- 그래프 수준의 난수 시들르 설정

- 난수 시드에 의존하는 연산들은 실제로 그래프 수준과 연산 수준의 두 가지 시드로부터 시드를 얻음

- 이 연산은 그래프 수준의 시드를 설정함


tf.random_normal([1])

- 정규분포로부터의 난수값을 반환합니다.

- 괄호 안의 [1] 은 rank 값을 의미함


▶ 변수

W = tf.Variable(tf.random_normal([1]),name='weight')

- 변수의 선언

- 1열(shape [1])의 텐서의 속성을 가지는 변수 선언


tf.global_variables_initializer()

- 반드시 변수는 초기화를 해야함

- 이 때 사용되는 변수 초기화 함수가 tf.global_variables_initializer()


sess.run(tf.global_variables_initializer())

- 변수 초기화 함수는 sess.run() 함수로 실행한다.


COST 함수 구하기

tf.square(hypothesis - y_train)

- 가설과 정답간의 오차에 제곱을 한다.

- 제곱을 하는 이유는 오차의 음수를 없애고 오차가 클수록 그 값이 커지게 만든다.


cost = tf.reduce_mean(tf.square(hypothesis - y_train))

- 오차의 제곱값들을 모두 더하여 평균을 낸 값이 코스트 함수이다.

- 코스트 함수값이 0에 가까울 수록 가설의 정답에 가깝다는 의미이다.


▶ Gradient descent 알고리즘을 구현한 코드

optimizer = tf.train.GradientdescentOptimizer(learning_rate=0.01)

- "경사타고 내려가기" 라는 미분을 통해 최저 비용을 향해 진행하도록 만드는 핵심 함수

- 이때 rate를 전달했기 때문에 매번 0.01 만큼씩 내려가게 된다.


train = optimizer.minimize(cost)

- minimize 함수를 통하여 W, b 값을 구한다.



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
32
33
34
35
36
#Lab 2-1 Linear Regression(variable input)
#변수만 사용하여 Gradient Descent 구현
import tensorflow as tf
tf.set_random_seed(777# for reproducibility
 
# X and Y data
x_train=[1,2,3]
y_train=[1,2,3]
 
# Try to find values for W and b to compute y_data = x_data*W+b
# We know that W should be 1 and b should be 0
# But le TensroFlow figure it out
W=tf.Variable(tf.random_normal([1]),name='weight')
b=tf.Variable(tf.random_normal([1]),name='bias')
 
# Our hypothesis XW+b
hypothesis = x_train*+ b
 
# cost/loss function
cost=tf.reduce_mean(tf.square(hypothesis - y_train))
 
# Minimize
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
train = optimizer.minimize(cost)
 
# Launch the graph in a session
sess = tf.Session()
 
# initializes global variables in the graph
sess.run(tf.global_variables_initializer())
 
#Fit the line
for step in range(2001):
  sess.run(train)
  if step%20 == 0:
    print(step,sess.run(cost),sess.run(W),sess.run(b))
cs


반응형

'잡다한 IT > 머신러닝 & 딥러닝' 카테고리의 다른 글

02-3 Linear Regression : feed from variable  (0) 2018.08.07
02-2 Linear Regression : feed  (0) 2018.08.07
01 Tensorflow basic  (0) 2018.08.07
참고 사이트  (0) 2018.08.07
텐서 플로우 개요  (0) 2018.08.07