:: ai/tensorflow

tensorflow :: 텐서플로우 v1(1.x), v2(2.x) 차이 및 버전 업그레이드

토람이 2022. 2. 25. 16:11

* https://www.springboard.com/blog/ai-machine-learning/tensorflow-1-0-vs-tensorflow-2-0/

위 사이트를 참고하여 작성한 내용입니다. :)

 

1.x 버전의 텐서플로우를 사용해왔던 개발자라면 한 번쯤은 2.x 버전으로의 업그레이드를 고려해보았을 것이다.

그치만 변경된 사항이 많다고 해서 차마 쿨하게 업그레이드 하긴 어려운 일..!

그래서 버전1과 버전2는 어떤 차이가 있는지 정리해 보았다.

 

 

1. Tensorflow

텐서플로우는 머신러닝 관련 툴, 라이브러리, 여러 커뮤니티 리소스들을 담은 오픈소스 플랫폼이다.

 

 

2. Tensorflow 2.0 으로 가면서 어떤 점이 달라졌을까?

tensorflow 2.0 은 보다 쉬운 사용성을 최대 강점으로 내세우는 듯했다.

 

특히나 2.0 에서는 Keras 를 많이 통합시켰다는 특징이 있다.
이에 대한 히스토리를 간단히 설명하자면,

Keras, Tensorflow 는 원래 각각의 독립된 오픈소스 라이브러리였는데

몇 년 전 Keras 쪽이 Tensorflow 쪽으로 통합되었다고 한다.

 

그런데도 tensorflow 사용 수요가 점점 떨어지자 고민이 많아진 tensorflow 쪽은

2.0 버전을 내면서 고수준(high-level) 프로그래밍 관련 부분(기능)들을 Keras 에서 차용해오기로 했다.

고수준 프로그래밍에서는 Keras 가 Tensorflow 에 비해 훨씬 간단해서(simple) 사용자가 가져다 쓰기가 더욱 쉽다고 하는데,

이번 버전에서는 이런 Keras 를 더 많이 통합시킴으로써 심플한 사용성을 얻을 수 있게 된 것이다.

 

 

3. 주요 변화들

2.0 버전으로 가면서 가장 많이 변경된 점은 다음과 같다.

 

1) high-level API 를 담당하는 Keras

앞서 말했듯 high-level API 를 담당하도록 Keras 를 통합시켰고,

머신러닝 모델을 빌드하고 학습할 때 손쉽게 사용할 수 있게 되었다.

 

2) 플랫폼 호환성 Up

다양한 플랫폼에 유연하게 배포(deploy)되도록 호환성을 높였다.

 

TensorFlow.js 자바스크립트 라이브러리. 모델을 브라우저나 Node.js 에 손쉽게 배포하게 해줌
TensorFlow Lite 모바일이나 임베디드 디바이스 등에 배포할 목적의 Lightweight (경량화) 버전 라이브러리
TensorFlow Extended 대규모 production 환경에 쓰이는 end-to-end 플랫폼


3) 과감한 API 변경

기존 api 들이 아예 없어져버리거나 rename 된 것들이 많다.


4) Eager execution - Session 의 개념이 사라졌다

1.0 에서는 session 안에서 연산이 진행되었어야 했는데 이제는 session 을 선언하고 실행할 필요가 없어졌다.

 

< 1.0 >

a = tf.constant(5)
b = tf.constant(4)
c = a + b

with tf.Session() as sess:
    print(sess.run(c))

 

< 2.0 >

a = tf.constant(5)
b = tf.constant(4)
c = a + b

print(c)

 

처음 텐서플로우 코드를 짤 때 session 선언해야 하는 부분이 다소 귀찮고 의아했는데,

2.0 으로 넘어가면서 좀 더 직관적으로 바뀐 듯싶다.

 

개발자들의 경우 3, 4번의 특징이 중요하지 않을까 한다. (코드 수정해야하니까^^;)

 

 

4. tensorflow v1 코드를 v2 에서도 그대로 사용하기

부득이하게 버전을 올려야 하지만 당장의 서비스가 염려되어 바로 코드 변경하는 것이 부담이 될 수 있다.

그런 경우 1.x 버전의 코드를 그대로 사용하여 2.x 에서 실행할 수 있다.

 

import tensorflow.compat.v1 as tf

tf.disable_v2_behavior()


상단에 이렇게 선언해두면 대부분의 기존 코드를 그대로 사용할 수 있다.

 

 

5. v1 -> v2 코드 변경하기

버전 1.0 의 코드를 2.0 문법에 맞게 변환하고자 하는 경우,

 

우선 텐서플로우 공식 docu 에서 제공하는 업그레이드 스크립트를 활용하여

자동 코드 변환이 가능하다고 한다.

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

 

스크립트를 활용하지 않고 직접 변환하고자 할 경우

코드상의 주요 변경사항을 정리해둔 페이지가 있는데 지금은 잘 안 열리는 듯하다.

이 부분은 직접 변환해보고 정리해서 이어질 포스팅에 작성해보겠다 :D

300x250