엔지니어스 - Engineeus

텐서플로우(Tensorflow) 배워볼까? - 기초 개념 [1] 본문

Autonomous Tech./Machine Learning

텐서플로우(Tensorflow) 배워볼까? - 기초 개념 [1]

Engineeus 2020. 3. 8. 01:59
728x90

텐서플로우

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

2015년 11월에 처음 공개된 오픈 소스로 머신 러닝(Machine Learning)에서 현재 제일 활발히 이용 되는 기계학습 전용 라이브러리 입니다. 텐서플로우가 머신러닝이나 딥러닝에서 주로 쓰이는 이유는 '분산, 묶음'이 주된 이유 입니다.

- 분산: GPU를 이용한 병렬처리 등이 가능

- 묶음: TensorFlow, TensorBoard, TensorFlow Serving이라는 소프트웨어들의 묶음

*TensorFlow: 모델 정의, 데이터 학습

*TensorBoard: 네트워크 시각화 프로그램

*TensorFlow Serving: 이미 학습된 텐서플로우 모델을 쉽게 활용할 수 있게 하는 소프트웨어. 모델을 만들고 돌려보는 작업을 훨씬 빠르게 반복적으로 할 수 있도록 해줍니다.

 

 

그 외의 프레임워크들

Caffee: C++로 작성된 신경망으로 영상처리에 집중

Chainer: Python 기반으로 한 컴퓨터에서 여러 개의 GPU를 활용

Nervana Neon: Python 기반으로 한 컴퓨터에서 여러 개의 GPU를 활용

Deeplearning4j: Java기반으로 Spark, Hadoop, 다른 자바 기반의 분산 소프트웨어와 결합되어서 활용

Theano: Python 기반으로 유연하고, 쉽고, 사용자 친화적이며 Tensorflow와 비슷

Torch: Lua로 작성되어여러 대혀 회사에서 지원 받음

 

 

계산 그래프

계산 그래프는 노드와 엣지로 나뉩니다. 엣지는 보통 숫자를 나타내며 방향성을 보여주는 벡터(vertor)의 역할이며 노드는 함수(계산) 입니다. 

노드(Node) - 함수(계산 기능)

엣지(Edge) - 방향성

 

예제)

그러면 위 그래프를 가지고 연산을 한번 해 볼까요?

1, 2과 input으로 들어가며 add라는 함수를 거치면?

f(1, 2) = 1 + 2 = 3

결과는 3이 되겠네요. 간단 하죠?

 

예제)

그러면 이제 심화 단계로 한반 계산 해 봅시다. mul은 곱하기, add는 더하기, minus는 빼기 입니다.

 

c는 어떻게 될까요? 먼저 구해 보시고 답 보세요~

 

1. input인 3, 4가 input holder에 들어 갑니다.

2. a = f(3, 4) = 3 x 4 = 12

3. b = f(3, 4) = 3 + 4 = 7

4. c = f(12, 7) 12 - 7 = 5

 답은 c = 5 입니다!

 

 

의존성(Dependency)


의존성이란 어떠한 노드가 상대 노드의 존재 유무에 결정이 날때 하는 말입니다. 

직접의존

: 위 그래프를 보면 제일 오른쪽 노드인 e는 c, d에게 직접의존을 하고 있습니다. c가 없으면 e도 돌아가지 않겠죠.

 

간접의존

: e는 또한 a가 없다면 계산이 안될겁니다. 이런 경우 e는 a, b에 간접의존 하고 있다고 합니다.

 

 


 

그럼 다음 시간에는 텐서플로우를 설치 해보겠습니다.

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

불러오는 중입니다...

 

Comments