■ 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*W + 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 |