Notice
Recent Posts
Recent Comments
NeuroWhAI의 잡블로그
[TensorFlow] 선형 회귀 본문
으으 머신러닝이랑 관련없이 좀 이해가 안되는 부분이 있어서 오래 걸렸네요.
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
37
38
39
40
41
|
import tensorflow as tf
# 입력, 목표 출력
x_data = [1, 2, 3]
y_data = [1, 2, 3]
# '[1]' Shape을 가지는 변수 W, b를 -1.0 이상 1.0 미만의 균등한 범위에서 랜덤값으로 초기화
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
b = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
# 입력, 목표 출력이 들어갈 플레이스홀더 생성
X = tf.placeholder(tf.float32, name="X")
Y = tf.placeholder(tf.float32, name="Y")
# 목표 함수 정의
hypothesis = W * X + b
# 목표 함수의 비용을 계산하는 식 정의
cost = tf.reduce_mean(tf.square(hypothesis - Y))
# 학습률 0.1의 경사하강법을 사용하고 위에서 만든 cost의 값을 최소화하는 것을 목표로 설정
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1)
train_op = optimizer.minimize(cost)
with tf.Session() as sess:
# 변수 초기화
sess.run(tf.global_variables_initializer())
for step in range(100):
# 플레이스홀더에 값을 설정해주고 학습 실행 (현재 오류를 출력하기 위해서 cost도 넣음)
_, cost_val = sess.run([train_op, cost], feed_dict={
X: x_data,
Y: y_data
})
print(step, cost_val, sess.run(W), sess.run(b))
# 임의의 입력값에 제대로 원하는 값이 나오는지 확인
print("\n=== Test ===")
print("X: 5, Y: ", sess.run(hypothesis, feed_dict={X: 5}))
print("X: 2.5, Y: ", sess.run(hypothesis, feed_dict={X: 2.5}))
|
cs |
전체적인 흐름은 어렵지 않은데 reduce_mean이 어떻게 저렇게 동작하는게 가능한지 의문이 안풀려서;;
제가 제대로 알고있는지 모르겠는데 minimize(cost)를 하면 자동으로 cost 함수를 미분해서 파라미터를 조절하는데 필요한 값을 계산한다고 합니다.
참 대단..
'개발 및 공부 > 라이브러리&프레임워크' 카테고리의 다른 글
[TensorFlow] 간단한 분류 모델 - 심층 신경망 (0) | 2018.01.10 |
---|---|
[TensorFlow] 간단한 분류 모델 (0) | 2018.01.09 |
[Tokio] Rust 비동기 입출력 라이브러리 (0) | 2018.01.07 |
[Rust] bytes::Bytes (0) | 2018.01.06 |
[Nana] C++ GUI 라이브러리 nana (0) | 2018.01.02 |
Comments