더북(TheBook)

Note ≡ 플레이스홀더와 세션


텐서플로 1.x에서 사용하던 플레이스홀더와 세션을 알아보겠습니다.

텐서플로는 그래프를 미리 만들어 놓고, 나중에 필요할 때 그래프를 실행하는 방식으로 동작합니다. 변수 타입을 미리 설정해 놓고 나중에 필요할 때 이 변수를 호출하여 사용합니다. 이때 사용되는 것이 플레이스홀더입니다. 즉, 텐서플로에서 입력 데이터(텐서)를 보관하기 위한 장소가 플레이스홀더입니다. 따라서 플레이스홀더는 데이터를 입력받는 비어 있는 변수라고 생각할 수 있습니다. 먼저 그래프를 생성하고, 그 그래프가 실행되는 시점에 입력 데이터를 넣어 주며, 다음 방식으로 사용합니다.

import tensorflow as tf

input_data = [1,2,3]
x = tf.placeholder(dtype=tf.float32)
y = x * 2

 

세션은 그래프를 실행하는 단위입니다. 탐색기 파일과 같다고 생각하면 됩니다. 파일에 그래프를 저장하여 언제든지 실행할 수 있습니다. 앞서 입력 데이터를 넣어 두기 위해 플레이스홀더를 정의하고, 그래프가 실행되는 시점에 입력 데이터를 넣어 준다고 했습니다. 이때 그래프가 실행되는 시점을 세션이 실행되는 시점으로 이해하면 됩니다. 또한, 세션은 그래프에 [1,2,3] 입력 데이터를 넣어 y = x * 2 연산을 수행하는 역할을 하며, 다음 방식으로 사용합니다.

sess = tf.Session()
result = sess.run(y, feed_dict={x:input_data})

 

세션은 선언 → 실행(run) → 종료 순서로 사용됩니다.

▲ 그림 2-2 세션 사용 순서

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.