텐서플로우
텐서플로우는 데이터 플로우 그래프를 사용하여 수치 연산을 하는 오픈소스 소프트웨어 라이브러리입니다.
CPU나 GPU를 사용하여 연산을 구동시킬수 있으며, 머신러닝과 딥러닝 연구를 목적으로 구글 브레인 팀이 2015년에 개발했습니다.
2019년, 텐서플로우 2.0 버전이 공개되었습니다. 따라서 최근 코드들은 텐서플로우 2.0으로 작성되어 있습니다. 하지만 당연하게도 텐서플로우 2.0이 나오기 이전 코드들은 모두 텐서플로우 1.x 버전입니다.
따라서 머신러닝 및 딥러닝에 대한 넓고 깊은 이해를 위해선 텐서플로우 2.0뿐만 아니라 텐서플로우 1.x에 대한 지식을 갖고 있어야 합니다.
이번 실습에서는 텐서플로우 1.x와 텐서플로우 2.0으로 간단한 연산을 해보고, 이를 통해 각 버전을 비교해보도록 하겠습니다.
텐서플로우 1.x
기존 텐서플로우 1.x 버전에서는 위와 같이 그래프 구조를 이용해 연산을 하도록 구성되어 있습니다.
그래프를 사용하기 위해 만들어진 tf.Session()은 상수, 변수, 오퍼레이션을 선언하고 실질적으로 그래프를 실행하기 위한 객체입니다.
1.x 버전에서는 Session에서 모든 학습과 계산을 진행합니다. 따라서 값을 계산하고 출력하기 위해서는 Session을 반드시 실행시켜야합니다.
텐서플로우 2.0
그러나 텐서플로우 2.0에서는 파이썬의 함수처럼 바로바로 계산되어 사용할 수 있습니다. 이를 즉시 실행 (Eager Excution) 모드라고 합니다.
import numpy as np
import logging, os
logging.disable(logging.WARNING)
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3"
"""""
텐서플로우 1.x 버전
"""""
def tf1():
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
# 상수
a = tf.constant(5)
b = tf.constant(3)
# 계산 정의
add_op = a + b
# 세션 시작
sess = tf.Session()
result_tf1 = sess.run(add_op)
return a, b, result_tf1
"""""
텐서플로우 2.0 버전
"""""
def tf2():
import tensorflow as tf
tf.compat.v1.enable_v2_behavior()
# 상수
a = tf.constant(5)
b = tf.constant(3)
# 즉시 실행 연산, 텐서형태로 저장됨
result_tf2 = tf.add(a, b)
return a, b, result_tf2.numpy() # .numpy로 전환해서 시용해야 함
def main():
tf_2, tf_1 = tf2()[2], tf1()[2]
print('result_tf1:', tf_1)
print('result_tf2:', tf_2)
if __name__ == "__main__":
main()
출처: 앨리스 교육
반응형