1. 기본 개념 정리

1-1) About Tensorflow

Tensorflow는, 그래프의 node와 같은 역할을 하는 Tensor를 여러개 만들어, flow 그래프를 쉽게 빌드할 수 있도록 도와주는 라이브러리이다. Tensor는 array로 구현되며, Tensor들을 생성하여 그래프를 빌드하고 세션을 만들어 실행하면 ouput값이 리턴되는 방식으로 동작한다.

image

# Default Graph에 Tensor 생성
hello = tf.constant("Hello, TensorFlow!")

# 세션 생성
sess = tf.Session()

# op 실행
print(sess.run(hello))
b'Hello, TensorFlow!'


1-2) About Tensor

  • rank:0, shape:[]
3
  • rank:1, shape:[3]
[1. ,2., 3.]
  • rank:2, shape:[2, 3]
[[1., 2., 3.], [4., 5., 6.]]
  • rank:3, shape:[2, 1, 3]
[[[1., 2., 3.]], [[7., 8., 9.]]]


1-3) About Graph

3.0의 값을 가지는 노드a와 4.0의 값을 가지는 노드b를 더하기 노드로 연결하는 그래프 빌드

node1 = tf.constant(3.0, tf.float32)
node2 = tf.constant(4.0) # also tf.float32 implicitly
node3 = tf.add(node1, node2) # node1 + node2도 가능

image

sess = tf.Session()
print("sess.run(node1, node2): ", sess.run([node1, node2]))
print("sess.run(node3): ", sess.run(node3))
sess.run(node1, node2):  [3.0, 4.0]
sess.run(node3):  7.0
  • place holder

특정 노드를 place holder로 지정하여 간편하게 사용할 수 있다. 값을 넣어줄 떄는 feed_dict 옵션을 사용한다.

# 그래프 빌드
a = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)
adder_node = a + b
# 세션 실행
sess = tf.Session()
print(sess.run(adder_node, feed_dict={a: 3, b: 4.5}))
print(sess.run(adder_node, feed_dict={a: [1,3], b: [2, 4]})) # 스칼라 이외의 벡터값도 가능
7.5
[ 3.  7.]
  • adder_node에 사칙연산도 가능
add_and_triple = adder_node * 3.
print(sess.run(add_and_triple, feed_dict={a: 3, b:4.5}))
22.5

댓글남기기