TF 명령을 이용한 그래프 설계(빌드)
Variable : Tensorflow가 학습과정에서 변경시키는 변수
#가설 정의.
x_train = [1, 2, 3]
y_train = [1, 2, 3]
W = tf.Variable(tf.random_normal([1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')
hypothesis = x_train * W + b
#코스트 함수
cost = tf.reduce_mean(tf.square(hypothesis - y_train))
#코스트를 Minimize
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
train = optimizer.minimize(cost)
Run/update graph and get results
#Variable을 사용하기 전에는 반드시 global_variables_initializer()를 해줘야된다.
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.run(b))
Train을 실행시킨다는 의미는 전체를 실행시키는 것과 같다.
Train -> Cost -> Hypothesis -> W, b 이런식으로 연결이 되어 있기 때문이다.
Placeholder를 사용한 경우
X = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)
for step in range(2001):
cost_val, W_val, b_val, _ = \
sess.run([cost, W, b, train], feed_dict={X: [1, 2, 3], Y: [1, 2, 3]})
if step % 20 == 0:
print(step, cost_val, W_val, b_val)
#Model Testing
print(sess.run(hypothesis, feed_dict={X: [1], Y: [4]}
#집어넣은 값에 따른 예상치를 확인할 수 있다.