VSCode Tensorflow reload - enable_eager_execution() 관련 이슈 해결

import tensorflow as tf
tf.enable_eager_execution()

tf.enable_eager_execution() 을 설정했다가, 사용하지 않으려는데 자꾸 eager 관련 에러가 발생해요! 어떻게 커널이나 라이브러리 호출을 초기화시켜야 하나요?

안녕하세요, 오늘은 vscode의 커널에 관해 이야기 해보려고 합니다.
현재는 conda를 이용해서 가상환경 내에서 코드를 실행되게 해놓았는데,
TF2로 저장한 모델을 TF1으로 서빙해야 할 일이 있어서 eager 모드를 사용하였습니다.

다만 rllib에서 굳이 eager를 위처럼 명시적으로 활성화시키지 않고,
environment의 framework 설정에서 tf2나 tf1이 아닌 tfe를 사용하면 정상작동 하길래 config_dqn["framework"] = "tfe" 다음 구문을 삭제하고 실행하였습니다.
tf.enable_eager_execution()

그런데 이미 삭제한 구문인데도 불구하고, 인터프리터를 실행하면 자꾸

ValueError: tf.enable_eager_execution must be called at program startup.

에러가 발생했습니다.
(해당 에러는 다른 lib를 import하기 전에 tf를 import하고 eager 설정을 제일 앞단에 놓으면 해결되는 이슈입니다.)

그래서 커널단에서 tf를 로드할 때 캐시를 이용하거나, 무언가 초기화되지 않는 문제가 있구나라는 생각이 들었습니다.

주피터 노트북처럼 커널 자체를 종료하고 재시작하고 싶어서 터미널 종료, vscode 종료 등을 시도해보았지만 vscode에는 관련 기능이 없는 듯 했습니다.
그래서 라이브러리를 import할 때 importlib 자체를 리로드 하는 기능을 알려드립니다.

해결방법

import tensorflow as tf
import importlib
importlib.reload(tf)

importlib을 이용해서 importlib.reload(<imported lib>) 를 이용합니다.
이를 통해 tf를 import할 때 에러가 발생하던 부분이 해결되었습니다!

좋은 웹페이지 즐겨찾기