비버데이터
비버의 Data log
비버데이터
전체 방문자
오늘
어제
  • 분류 전체보기 (24)
    • Contact (1)
    • 회고록 (2)
    • ML&DL (7)
      • ML&DL 공통 (1)
      • NLP (1)
      • Tensorflow (3)
      • Pytorch (2)
    • TIL (13)
      • Python (6)
      • Linux (1)
      • Git (1)
      • 기타 (3)
      • 개발 오류 일지 (1)
    • 자격증&시험 이야기 (0)
    • 기본기 복습 (1)
    • 기타 (0)

블로그 메뉴

  • 홈
  • 관리자

공지사항

인기 글

태그

  • 개발성장일지
  • 파이썬
  • til
  • 파이토치
  • numpy
  • 데이터분석
  • 어쩌다보니팀내최고연차팀원이된
  • ubuntu
  • np.linspace
  • Linux
  • 딥러닝
  • 깃랩 모델 가중치 파일
  • Ai
  • float32
  • tensorflow
  • mac terminal shell
  • tf.linspace
  • chsh -s /bin/bash
  • Python
  • pytorch
  • 데이터사이언스
  • 회고록
  • Tensorflow 2.0
  • 머신러닝
  • 깃랩 모델 파일
  • 깃랩 대용량
  • 깃랩 weight file
  • batch job scheduling
  • no changes made
  • float64

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
비버데이터

비버의 Data log

[TensorFlow 2.0] 사라진 Session 모듈 "쉬운 대체 방법!"
ML&DL/Tensorflow

[TensorFlow 2.0] 사라진 Session 모듈 "쉬운 대체 방법!"

2020. 3. 25. 01:20

안녕하세요! 비버입니다! :D

저는 요즘 유튜브에서 김성훈 교수님의 '모두를 위한 딥러닝 강좌 시즌1' 를 들으며 텐서플로우를 이용한 딥러닝을 복습해보고 있어요. 그런데 시작부터 부닥치는 문제점이 참 많아요. 그중에 하나가 바로 TensorFlow의 Session 모듈!

그렇습니다.. 교수님이 강의를 촬영할 당시 TensorFlow의 버전은 1.0.0. 그러나 현재 내 파이썬에 설치된 TensorFlow는 버전 2.0...

2.0으로 업그레이드된 TensorFlow는 더이상 Session 모듈을 지원하지 않는다!

교수님 강의 캡처 이미지. 보다시피 Session 모듈을 이용한 코드를 예제로 보여주고 계심.

유튜브 영상의 댓글에는 한 친절한 수강생(?)분께서 다음과 같은 댓글을 달아두셨어요.

영상 아래 댓글창에 올라와 있는 한분의 댓글

저 말대로 코드를 입력하면 Session 모듈을 이용하실 수 있어요.

하지만!

실행 결과창에 끊임없이 경고 메세지가 뜬답니다.

위 댓글창의 코드를 입력하면 뜨는 경고 메세지

영어로 어쩌구 저쩌구. 복잡해보이지만 어쨌든 위 코드 또한 조만간 지원하지 않게 될 거라는 내용이에요.

그렇다면 결국 TensorFlow 2.0에 맞춰서 새로운 방식의 코드 작성 방식을 익힐 수밖에 없겠죠.

구글링 했습니다. 새로운 업데이트 내용들, Session 모듈 관련된 내용만 걸러 읽었어요.

그랬더니 오- 확실히 2.0 버전 방식이 더 직관적이고 편리해졌더라고요.

김성훈 교수님의 코드 예제를 2.0 방식으로 바꾸어 써보았는데 아래를 참고하시면 바로 이해가 되실 거라고 생각해요.

! ) 3 과 4를 더해서 7이 나오게 만드는 간단한 예제에요.

TensorFlow V1 방식

1
2
3
4
5
6
7
8
9
10
11
12
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
 
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
 
node1 = tf.constant(3.0, tf.float32)
node2 = tf.constant(4.0, tf.float32)
node3 = tf.add(node1, node2)
 
sess = tf.Session()
print(sess.run(node3))

TensorFlow V2 방식

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Info 로그를 필터링하려면 1, Warning 로그는 2, Error 로그는 3
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
 
import tensorflow as tf
 
# 앞쪽 레이어의 노드 빌드하기
node1 = tf.constant(3.0, tf.float32)
node2 = tf.constant(4.0, tf.float32)
 
# 뒷쪽 레이어의 노드(즉 node3)를 함수로 정의하기
@tf.function
def forward() :
    return node1 + node2
 
# 그래프를 실행시키고 output을 확인해보기
out_a = forward()
print(out_a)
 

 

두 개를 비교해보세요. 차이를 아시겠나요?

V1에서는 node들을 모두 빌드업 해둔 다음 Session 모듈을 이용해 그래프를 실행시켰어요.

하지만 V2에서는 입력값 (input)이 들어가는 node들만 빌드업 해둔 후 그 다음 node (이 예제에서는 node3)은 미리 빌드업 해둔 게 아니라 함수로 정의해서 실행시켰죠. 

딥러닝 공부를 위해 파이썬 기초 문법을 공부해보신 분들에게는 Session 이라는 낯선 모듈보다 def가 훨-씬 익숙하실 거예요. 그렇죠? 그래서인지 저는 개인적으로 V2의 코딩 방식이 더 마음에 들었어요.

결과는 둘다 똑같이 7 

1
2
3
4
#V1의 결과 (앞서 말한 경고 메시지가 함께 뜸)
Instructions for updating:
non-resource variables are not supported in the long term
7.0
 

 

1
2
#V2의 결과
tf.Tensor(7.0, shape=(), dtype=float32)

 

둘다 오류 없이 결과값(output)이 잘 나오지만, 앞으로 사용하지 못하게 될 가능성이 있는 V1 방식보단 V2 방식에 익숙해지는 게 좋을 것 같아요. 

이상! 비버였습니다! :D

'ML&DL > Tensorflow' 카테고리의 다른 글

[Tensorflow 2.0] 굳이 dtype float32 를 사용하는 이유  (0) 2022.04.02
[Keras 설치 에러] Keras requires TensorFlow 2.2 or higher. Install TensorFlow via `pip install tensorflow`  (2) 2020.11.01
    'ML&DL/Tensorflow' 카테고리의 다른 글
    • [Tensorflow 2.0] 굳이 dtype float32 를 사용하는 이유
    • [Keras 설치 에러] Keras requires TensorFlow 2.2 or higher. Install TensorFlow via `pip install tensorflow`
    비버데이터
    비버데이터
    포털 서비스 회사에서 Data Scientist 로 일하고 있는 비버입니다.

    티스토리툴바