:: ai/tensorflow

tensorflow :: 텐서플로우 contrib (v1 -> v2 코드 업그레이드 3)

토람이 2022. 3. 30. 15:18

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 가 많이 통합되었다는 점이다.

*참고: https://toramko.tistory.com/entry/tensorflow-%ED%85%90%EC%84%9C%ED%94%8C%EB%A1%9C%EC%9A%B0-v11x-v22x-%EC%B0%A8%EC%9D%B4-%EB%B0%8F-%EB%B2%84%EC%A0%84-%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C

 

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 

 

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

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

www.tensorflow.org

 

그러니 위 방법 중 편한 방법을 선택하여 코드 업그레이드를 진행하면 될 것 같다 :)

300x250