그래프에 있는 노드는 op(operation)라고 부름. op는 0개 혹은 그 이상의 tensor를 가질 수 있고 연산을 수행하며 0개 혹은 그 이상의 tensor를 만들어 내기도 함.
여기서 tensor란 정형화된 다타원 배열을 말한다. ex) 이미지: 부동소수점 수를 이용한 4차원 배열로 나타냄.
연산을 하려면 그래프가 세션 상에서 실행되어야 함. session은 그래프의 작업을 CPU나 GPU같은 디바이스에 배정하고 실행하기 위한 메서드를 제공함.
TensorFlow는 C, C++, 파이썬을 이용해 쓸 수 있는데, 파이썬을 이용하는 것이 훨씬 쉬움. C/C+++에서 제공하지 않ㄴ는 헬퍼 함수들을 쓸 수 있기 때문!
#1x2행렬 만들기
matrix1 = tf.constant([[3.,3.]])
#2x1행렬 만들기
matrix2 = tf.constant([[2.], [2.]])
#'matrix1'과 'matrix2를 입력값으로 하는 행렬곱
product = tf.matmul(matrix1, matrix2)
default graph에 3개 노드가 있음. 여기서 2개는 상수 작업, 다른 하나는 행렬곱 작업이다. 결과값을 얻으려면 session에다 graph를 실행해야 함.
# default graph를 실행
sess = tf.Session()
#행렬곱 실행
result = sess.run(product)
print(result)
#실행 마치면 Session 닫기
sess.close()
여기서 결과는 [[12.]]가 나온다.
input1 = tf.constant([3.0])
input2 = tf.constant([2.0])
input3 = tf.constant([5.0])
intermed = tf.add(input2, input3)
mul = tf.multiply(input1, intermed)
with tf.Session() as sess:
result = sess.run([mul, intermed])
print(result)
여기서 결과는 [array([ 21.], dtype=float32), array([ 7.], dtype=float32)]이다.
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = input1 * input2
with tf.Session() as sess:
print(sess.run([output], feed_dict={input1:[7.], input2:[2.]}))
결과는 [array([ 14.], dtype=float32)]
참고
https://inf.run/Ndkd
https://tensorflowkorea.gitbooks.io/tensorflow-kr/content/g3doc/get_started/basic_usage.html