contrib
tensorflow 2.x 버전에서 다음과 같이 contrib 모듈을 사용하면 실행 시 에러가 난다.
import tensorflow as tf
r1 = tf.contrib.layers.l1_regularizer(0.04)
r2 = tf.contrib.layers.l2_regularizer(0.04)
# AttributeError: module 'tensorflow' has no attribute 'contrib'
이는 tf.contrib 모듈이 텐서플로 v2.0 에서 사라졌기 때문이다.
대부분의 v1.0 함수들은 compat 모듈을 사용하여 v2.0 에서도 그대로 사용할 수 있다.
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
코드 상단부에 위와 같이 선언해두면 기존 코드를 그대로 사용 가능하다.
하지만 contrib 모듈의 경우 위 방법으로도 사용이 불가하다.
1. tf.keras 모듈 사용
텐서플로우가 v2.0 으로 넘어가는 과정에서 가장 큰 변화 중 하나는 keras 가 많이 통합되었다는 점이다.
tf.keras 의 regularizers 를 활용하여 v2.0 에 맞춘 코드를 작성할 수 있다.
r1 = tf.keras.regularizers.L1(l1=0.04)
r2 = tf.keras.regularizers.L2(l2=0.04)
2. tf-slim 라이브러리 사용
tf-slim 이라는 라이브러리를 사용해도 regularizer 를 그대로 활용할 수 있다.
tf-slim 라이브러리를 새로 설치해야 한다는 점이 번거로운 부분이지만,
기존 함수와 동일한 함수를 사용할 수 있다.
1) tf-slim 설치
pip install tf-slim
2) 코드 수정
import tf_slim as slim
r1 = slim.l1_regularizer(0.04)
r2 = slim.l2_regularizer(0.04)
contrib 모듈은 이렇게 기존의 v1.0 코드를 그대로 사용할 수는 없고
모듈을 변경하거나 라이브러리를 설치해야한다.
조금 번거롭긴 하지만, 실제로 v2.0 에서 아예 사라진 모듈의 경우
tensorflow 공식 가이드에서도 다른 라이브러리나 패키지로 바꾸어 사용할 것을 권장하고 있다.
https://www.tensorflow.org/guide/upgrade?hl=ko
그러니 위 방법 중 편한 방법을 선택하여 코드 업그레이드를 진행하면 될 것 같다 :)
300x250
':: ai > tensorflow' 카테고리의 다른 글
tensorflow :: 텐서플로우 losses 의 regularization loss (v1 -> v2 코드 업그레이드 5) (0) | 2022.04.12 |
---|---|
tensorflow :: 텐서플로우 layers (v1 -> v2 코드 업그레이드 4) (0) | 2022.03.31 |
tensorflow :: 텐서플로우 session, placeholder (v1 -> v2 코드 업그레이드 2) (0) | 2022.03.07 |
tensorflow :: 텐서플로우 set_random_seed (v1 -> v2 코드 업그레이드 1) (0) | 2022.02.28 |
tensorflow :: 텐서플로우 v1(1.x), v2(2.x) 차이 및 버전 업그레이드 (0) | 2022.02.25 |