# 텐서플로우 모듈 import
import tensorflow as tf

# 학습 데이터
xData = [1, 2, 3]
yData = [1, 2, 3]

# tf.Variable : 텐서플로우가 학습하는 과정에서 변경되는 변수(텐서플로우 전용 변수)
# tf.random_normal(shape)
W = tf.Variable(tf.random_normal([1]), name="weight")   # Rank가 1이며 Shape는 값을 하나만 가지는 Vector
b = tf.Variable(tf.random_normal([1]), name="bias")
print(W)
print(b)

# 가설 만들기
# H(x) = Wx + b
H = W * xData + b
print(H)

# Cost / Loss 구하기
# tf.square(x, y) : x와 y의 거리를 제곱
# tf.reduce_mean(x) : x를 평균
diff = tf.square(H - yData)
cost = tf.reduce_mean(diff)
print(diff)
print(cost)

sess = tf.Session()
# tf.Variable 인 Variable오퍼레이션을 사용할 땐 반드시 미리 초기화
sess.run(tf.global_variables_initializer())

print(sess.run(W))
print(sess.run(b))
print(sess.run(H))
print(sess.run(diff))
print(sess.run(cost))