[텐서플로우 정리] 07. 세션과 구구단
텐서플로우를 구동해서 실질적인 결과를 보여준다.
여기까지 익히면 머신러닝을 학습하기 전의 준비 과정으로 충분하다.
1부터 3까지 반복하는 코드와 구구단을 출력하는 코드를 만들어 봤다.
각각 두 가지, 세 가지 버전으로 만들었는데,
많은 차이가 나진 않지만, 나름대로 모든 방법이 의미를 갖기 때문에 차이점을 주목해서 봤으면 한다.
가장 중요한 코드는 마지막에 있는 placeholder를 사용하는 방법이다.
# 예제1 : 1부터 3까지 증가
# 예제2 : 구구단
import tensorflow as tf
def one2three_1():
state = tf.Variable(1)
one = tf.constant(1)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
for _ in range(3):
print(sess.run(state))
state = tf.add(state, one)
def one2three_2():
state = tf.Variable(0)
one = tf.constant(1)
value = tf.add(state, one)
update = tf.assign(state, value)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
for _ in range(3):
print(sess.run(update))
def table99_1(which):
level = tf.constant(which)
state = tf.Variable(1)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
for i in range(1, 10):
left, rite = sess.run(level), sess.run(state)
state = tf.add(state, 1)
print('{} x {} = {:2}'.format(left, rite, left*rite))
def table99_2(which):
# update를 처리하면 연계된 모든 Tensor 객체도 함께 처리됨
level = tf.constant(which)
state = tf.Variable(0)
add = tf.add(state, 1)
value = tf.assign(state, add)
update = tf.mul(level, value)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
for _ in range(9):
# left, rite, result = sess.run([level, state, update])
result = sess.run(update)
left, rite = level.eval(), state.eval()
print('{} x {} = {:2}'.format(left, rite, result))
def table99_3(which):
left = tf.placeholder(tf.int32)
rite = tf.placeholder(tf.int32)
update = tf.mul(left, rite)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
for i in range(1, 10):
result = sess.run(update, feed_dict={left: which, rite: i})
print('{} x {} = {:2}'.format(which, i, result))
one2three_1()
one2three_2()
table99_1(7)
table99_2(7)
table99_3(7)
[출력 결과 1]
1
2
3
[출력 결과 2]
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
'텐서플로' 카테고리의 다른 글
텐서플로우 실수 오차(정밀도) (0) | 2016.09.05 |
---|---|
[텐서플로우 정리] 08. 초기값과 난수 (0) | 2016.08.16 |
[텐서플로우 정리] 06. 수학 함수 (0) | 2016.08.15 |
[텐서플로우 정리] 05. Shapes & Shaping (0) | 2016.08.15 |
[텐서플로우 정리] 04. Slicing & Joining (0) | 2016.08.15 |