본문 바로가기
DeepLearning Framework & Coding/De-bugging

Tensorflow2는 tf.contrib를 지원하지 않습니다.

by 노마드공학자 2020. 12. 30.

Python과 Tensorflow를 2020년 이후에 설치하시는 분들이라면, default로 python은 3이상, tensorflow는 2.1이상 버전이 깔리게 됩니다.

 

python3는 아직 pandas library가 호환이 잘 되지 않는 문제가 있음을 발견했고,

 

tensorflow 2이상의 버전은, tf.contrib를 지원하지 않는다는것을 확인했습니다.

 

https://www.tensorflow.org/guide/upgrade?hl=ko

 

텐서플로 2.0으로 코드 업그레이드  |  TensorFlow Core

Note: 이 문서는 텐서플로 커뮤니티에서 번역했습니다. 커뮤니티 번역 활동의 특성상 정확한 번역과 최신 내용을 반영하기 위해 노력함에도 불구하고 공식 영문 문서의 내용과 일치하지 않을 수

www.tensorflow.org

텐서플로우 공식홈페이지에도 직접적으로 언급이 되어있네요

 

 

텐서플로 2.x 모듈에서 사라지는 것들(예를 들면, tf.flags tf.contrib) 때문에, 어떤 변동사항은 compat.v1으로 바꾸는 것만으로는 동작하지 않을 수 있습니다.

 

 

텐서플로우가 Keras를 인수해서 keras를 적극 사용하고, 좀더 간편하게 하기위해 tf.contrib를 없앴다는것은 알고있지만,

tf.contrib은 그냥 일반 호출함수가 아니라서.. 사실상 이것을 못쓰면 tensorflow 1은 못쓴다고 봐야됩니다.

 

구글자식들 진짜 교묘하게 상위버전을 강제시키네요, 충분히 호환시킬 수 있었을텐데

 

한개한개씩 tensorflow1에서도 돌아갈 수 있도록, 다른버전을 아래 링크와 같이 정리하고있었는데요

 

https://limitsinx.tistory.com/41

 

module 'tensorflow_core.compat.v1' has no attribute 'contrib'

해당 오류는 Tensorflow 2.0 이상의 버전을 사용하시는 분들이 1.X버전의 코드를 사용하기 위해 import tensorflow.compat.v1 as tf tf.disable_v2_behavior() 코드를 기반으로 작성하실때 나타나는 문제점입니..

limitsinx.tistory.com

이것도 한두개지, RNN부터는 tf.contrib를 엄청나게 많이쓰는지라 이거 찾는게 시간이 더걸리는...

 

배보다 배꼽이 더 커지는 상황이라, 저도 CNN까지만 tensorflow 1 코드로 진행하고 RNN부터는 tensorflow 2코드로 진행을 해야겠네요

 

뭔놈의 코드 문법을 그렇게 바꾸어 놓았는지.. 기존 유저들은 전혀 생각하지 않나.. 구글 마음에 안드는데 파이토치로 넘어가버릴까 그냥...

 

텐서플로우3 에서도 기존 유저들에게 이런 모습을 보인다면 pytorch(Facebook에서 만든 ai.framework)로 미련없이 넘어가야겠네요

 

Stack Overflow를 보면 수많은 외국인들도 이것때문에 어려움을 겪고있네요..

 

https://stackoverflow.com/questions/59644859/attributeerror-module-tensorflow-core-compat-v1-has-no-attribute-contrib

 

AttributeError: module 'tensorflow_core.compat.v1' has no attribute 'contrib'

x = tf.placeholder(dtype = tf.float32, shape = [None, 28, 28]) y = tf.placeholder(dtype = tf.int32, shape = [None]) images_flat = tf.contrib.layers.flatten(x) logits = tf.contrib.layers.fully_conne...

stackoverflow.com

여기서 제시하는 해법은 심플합니다! 

 

지금 Tensorflow를 밀어버리고, 1버전으로 다시받으라는 거네요..ㅋㅋ

 

저는 그냥 2를 다시 배우겠습니다.. 앞으로 계속 써야되기도 할거니까요..

 

따라서 RNN부터 연재되는 글은 tensorflow2코드로 진행하도록 하겠습니다.

 

읽어주셔서 감사합니다.

 


https://www.reddit.com/r/tensorflow/comments/bzyt8d/tfcontriblayers_tf_v1x_in_tensorflow_20_install/

 

tf.contrib.layers (TF v1.x) in TensorFlow 2.0 install

I'm using TensorFlow 2.0.0 and am trying to run some TensorFlow 1.x code. I've done the obvious things: import tensorflow.compat.v1 as tf ...

www.reddit.com

 

Tensorflow-addson을 설치해서 진행하는 방법이 있다고하는데

addson 설치는 완료했고 import tensorflow-addons as tfa로 선언까지했는데

 

이후 사용법이 모호하네요..

tfa.layer이런식으로 기존에 tf대신 tfa라고 쓰면되는건가..해서 해봤더니 역시나 안도는군요..

댓글