AI/Deep Learning

[Tensorflow2.x] Tensorflow의 이해

Jeong Jeon
반응형

텐서플로우가 어떻게 작동하는지, 어떤 구조를 가지고 있는지 그 Flow에 대해서 알아보도록 하자.

독학은 참 어렵지만 새로운것은 항상 재밌다.

 

1). 플로우(Flow) : Data Flow Graph Computation

  • 텐서플로우는 병렬처리가 필수인데, 대용량데이터의 연산때문이다.
  • 연산구조이다. 
  • 노드를 연결하는 엣지가 데이터를 / 노드는 데이터를 통해 수행하는 연산 역할을 하는 그래프 구조를 의미한다.

** 여기서 노드와 엣지란?

  • 엣지(Edge) 텐서를 의미하며  엣지의 방향은 텐서의 흐름을 의미하고 
  • 노드(Node) 곱하고나누는   텐서를 처리하는 연산을 말합니다.

2). 그래프 구조(Graph structure)와 Data Flow 구조

Data Flow를 이해하려면 그래프구조를 알아야한다.

 

그래프 구조란 ?

  • 노드와 엣지로 구성된 구조
  • 장점 : 의존관계를 이용해 연산량이 최소화 될수 있다.!!!!!

 

예시를 그림으로 알아보자

a = [1,2,3], b = [4,5,6]   a + b 구하는 것을  Data Flow Graph 표현

여기서 데이터 a,b가 edge가 되며, node로 흘러가는 그래프 구조를 갖그며, node에 지정된 function을 하는 방법인것을 알수 있다.

 

쉬운 예제로 덧셈, 뺄셈, 곱셉을 표현해보자

 

import tensorflow as tf  => 비어있는 기본 그래프구조가 만들어진다.

a = tf.Variable(1) => 상수 1node 생성
b = tf.Variable(2) => 상수 1node 생성
c = tf.Variable(3) => 상수 1node 생성

d = tf.multiply(a,b) => a*b 곱셈 연산
e = tf.add(c,b) => c+b 덧셈 연산
f = tf.subtract(d,e) => d-e 뺄셈 연산

 

그림으로 표현하면

**TensorFlow 연산축약 연산자설명

tf.add() a + b a와 b를 더함
tf.multiply() a * b a와 b를 곱함
tf.subtract() a - b a에서 b를 뺌
tf.divide() a / b a를 b로 나눔
tf.pow() a ** b 를 계산
tf.mod() a % b a를 b로 나눈 나머지를 구함
tf.logical_and() a & b a와 b의 논리곱을 구함. dtype은 반드시 tf.bool이어야 함
tf.greater() a > b 의 True/False 값을 반환
tf.greater_equal() a >= b 의 True/False 값을 반환
tf.less_equal() a <= b 의 True/False 값을 반환
tf.less() a < b 의 True/False 값을 반환
tf.negative() -a a의 반대 부호 값을 반환
tf.logical_not() ~a a의 반대의 참거짓을 반환. tf.bool 텐서만 적용 가능
tf.abs() abs(a) a의 각 원소의 절대값을 반환
tf.logical_or() a I b a와 b의 논리합을 구함. dtype은 반드시 tf.bool이어야 함

방금 생성한 연산 그래프를 실행해보자

tensorflow 1점대에는 session을 따로 생성하여 메모리 할당 후 실행하였지만, 2.x대는 그 과정이 생략된다.

문법은 잘 알아보면서 사용하도록 하자

반응형