엔지니어스 - Engineeus

[Windows] 텐서플로우(Tensorflow) 배워볼까? - 기본 그래프 구현 [2] 본문

Autonomous Tech./Machine Learning

[Windows] 텐서플로우(Tensorflow) 배워볼까? - 기본 그래프 구현 [2]

Engineeus 2020. 3. 8. 14:11
728x90

저번 시간에는 텐서플로우의 기초 개념에 대해 익혔습니다.

https://mickael-k.tistory.com/80

텐서플로우(Tensorflow)란?

텐서플로우 텐서플로우는 Google이 지원하고 실제 구글에서도 사용을 하고 있는 "데이터 플로우 그래프를 이용한 수치 계산을 위한 오픈 소스 라이브러리" 입니다. 2015년 11월에 처음 공개된 오픈 소스로 머신 러..

mickael-k.tistory.com

본 시간에는 코드를 사용하여 기본 그래프를 그려 보겠습니다.

(텐서플로우 설치는 여기, 주피터노트북 설치는 여기 제 포스트를 참조 하시면 됩니다.)


 

기본 그래프 코딩

아래와 같은 그래프를 코딩 해서 output이 일치 하는지 알아보겠습니다.

기존 포스트에서 배운것과 같이 동그라미는 노드(node), 화살표는 엣지(edge)라고 했습니다. 이 노드는 또한 오퍼레이션(Operation, OP)라고도 합니다.

 

 

 

이 그래프의 코딩은 아래와 같이 합니다.

 

 

일단 결과값은 7이 잘 나오네요. 그럼 이제 각 세션을 해석 해 봅시다.

 

코드 리뷰

1. 라이브러리 import

import tensorflow as tf

위 글은 tenforflow라이브러리를 불러와서 너무 기니 tf라고 정의 하겠다고 하는 말 입니다.

원래 사용 시에 tensorflor.xxx 이렇게 사용 해야 하는데 너무 기니 tf.xxx 이렇게 사용 할 수 있어 편하죠.

 

2. 노드 생성 - 상수 생성

a = tf.constant(5, name="input_a")
b = tf.constant(3, name="input_b")

앞에서 input이 안변하는 상수니 이걸 노드에 넣어 주는 역할을 합니다.

5, 3은 들어간 숫자이며 이름은 아무렇게나 정하지만 직관적으로 이해 되도록 정하는게 좋습니다.

 

3. 노드 생성 - 계산 함수 생성

c = tf.multiply(a, b, name="mul_c")
d = tf.add(a, b, name="add_d")
e = tf.subtract(c, d, name="minus_e")

위의 c에서 multiply를 통해 a와 b를 곱합니다.

d에서는 add함수를 통해 a, b를 더합니다.

최종 e에서는 subtract 함수를 통해 c와 d를 뺍니다.

 

4. 함수 실행

위 2와 3번에서는 그래프 생성에서는 함수를 생성 하기만 하였지 가동을 시키지 않았습니다.

여기서 Session이라는 함수를 sess라고 명명하고 이 안에 있는 run이라는 함수로 e를 최종 실행 합니다.

이넨 tf.Session.run(e)와 같은 말 입니다.

sess = tf.Session()
sess.run(e)

 

5. Session 닫기

sess.close()

열어 준 세션은 닫아 줍니다. 기술적으로는, session 객체는 프로그램이 종료되면 자동으로 닫히지만 명시적으로 session을 닫아주는 것이 좋습니다.

 


 

다음 포스트 에서는 텐서(tensor)와 넘파이(NumPy)를 배워보겠습니다.

https://mickael-k.tistory.com/84

불러오는 중입니다...

 

Comments