session
tensorflow 에서 session 이란,
정의한 노드 및 연산 그래프를 실행할 수 있는 환경을 제공해주는 클래스이다.
연산을 실행하기 위한 리소스를 할당하고 중간 결과 및 변수값을 저장하는 역할을 한다.
세션은 보통 다음과 같은 순서로 활용된다.
1) 연산 그래프를 정의한다.
2) 이 그래프를 실행할 세션을 정의한다.
3) 세션을 실행한다. (tf.Session.run)
4) 세션을 종료한다. (tf.Session.close)
tensorflow v2.0 으로 넘어가면서 이 Session 의 개념이 사라졌다.
아마 버전이 바뀌면서 가장 큰 변화 중 하나가 이 부분일 것이다.
그래서 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 를 미리 정의해두면 후에 연산 과정에서 쓰이게 된다.
placeholder 역시 v2.0 에서는 사라지게 되었다.
tf.placeholder(dtype=tf.float32, shape=(2))
# AttributeError: module 'tensorflow' has no attribute 'placeholder'
placeholder_with_default
output 값이 지정(feed)되지 않은 경우
input(default) 값을 그대로 내보내는 placeholder 이다.
placeholder 가 사라졌으니 이 또한 v2.0 에서 사라졌다.
tf.placeholder_with_default(False, shape=())
# AttributeError: module 'tensorflow' has no attribute 'placeholder_with_default'
코드 버전업: v1.0 코드 그대로 사용
v2.0 으로 가면서 유사한 기능을 갖도록 코드가 변경되거나 rename 된 함수들이 있다.
그러나 위에 언급한 session 이나 placeholder 와 같은 기능들은 사라지게 되어
v2.0 에 맞는 코드로 변환하는 것은 어려워 보인다.
이런 경우 앞선 포스팅에 언급한 것처럼 compat 모듈을 사용하여 v2.0 기능을 끄도록 설정,
v1.0 코드를 기존 그대로 사용하는 방식을 택해야 할 듯하다.
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
상단에 위와 같이 선언해두면 기존 코드를 그대로 사용 가능하다.
':: ai > tensorflow' 카테고리의 다른 글
tensorflow :: 텐서플로우 losses 의 regularization loss (v1 -> v2 코드 업그레이드 5) (0) | 2022.04.12 |
---|---|
tensorflow :: 텐서플로우 layers (v1 -> v2 코드 업그레이드 4) (0) | 2022.03.31 |
tensorflow :: 텐서플로우 contrib (v1 -> v2 코드 업그레이드 3) (0) | 2022.03.30 |
tensorflow :: 텐서플로우 set_random_seed (v1 -> v2 코드 업그레이드 1) (0) | 2022.02.28 |
tensorflow :: 텐서플로우 v1(1.x), v2(2.x) 차이 및 버전 업그레이드 (0) | 2022.02.25 |