session

tensorflow 에서 session 이란,

정의한 노드 및 연산 그래프를 실행할 수 있는 환경을 제공해주는 클래스이다.

연산을 실행하기 위한 리소스를 할당하고 중간 결과 및 변수값을 저장하는 역할을 한다.

세션은 보통 다음과 같은 순서로 활용된다.

  1. 연산 그래프를 정의한다.

  2. 이 그래프를 실행할 세션을 정의한다.

  3. 세션을 실행한다. (tf.Session.run)

  4. 세션을 종료한다. (tf.Session.close)

tensorflow v2.0 으로 넘어가면서 이 Session 의 개념이 사라졌다.

아마 버전이 바뀌면서 가장 큰 변화 중 하나가 이 부분일 것이다.

(* 이전 포스팅 참고: https://toramko.tistory.com/entry/tensorflow-텐서플로우-v11x-v22x-차이-및-버전-업그레이드)

그래서 v2.0 환경에서 기존처럼 Session 을 선언할 경우 다음과 같이 에러가 발생한다.

session = tf.Session()

# AttributeError: module 'tensorflow' has no attribute 'Session'

global_variables_initializer

모델을 학습 시킬 때 변수(Variables)를 사용하는데, 모델의 연산을 시작하기 전 이 변수들을 반드시 명시적으로 초기화 해주어야 한다.모든 변수를 한 번에 초기화하는 연산이 바로 global_variables_initializer 이다.

이 연산 또한 v2.0 에서는 사라지게 되었다.

session.run(tf.global_variables_initializer())

# AttributeError: module 'tensorflow' has no attribute 'global_variables_initializer'

placeholder

placeholder 는 tensorflow 가 연산을 실행할 때 값을 넣는 공간이다.말 그대로 '공간을 가지고(hold) 있는 기능'을 하는데,입력될 값의 타입과 size 를 미리 정의해두면 후에 연산 과정에서 쓰이게 된다.