컴공생의 다이어리
텐서플로우(Tensorflow)란? 본문
텐서플로우(Tensoflow)란?
- 데이터 그래프를 수치적으로 연산하기 위해 구글에서 만든 오픈 소스 라이브러리
- 텐서(Tensor) 다차원의 배열을 담고 있는 노드(Node)와 이를 다양한 연산으로 연결하고 있는 엣지(Edge)로 구성되어 있으며, 이러한 텐서들이 서로 연산을 통해 값을 주고 받는 흐름(Flow)으로 작동
- 텐서플로우 자체는 기본적으로 C++로 구현 되어 있으며, 아래의 그림과 같이 Python, Java, Go 등 다양한 언어를 지원
- 하지만, 파이썬을 최우선으로 지원하며 대부분의 편한 기능들이 파이썬 라이브러리로만 구현되어 있어 Python에서 개발하는 것이 편함
- 텐서플로우에서 계산은 데이터 흐름 그래프(DataFlow Graph)로 이루어 짐
- 텐서 형태의 데이터들이 딥러닝 모델을 구성하는 연산들의 그래프를 따라 흐르면서 연산
- 딥러닝에서 데이터를 의미하는 Tensor와 DataFlow Graph를 따라 연산이 수행되는 형태(Flow)를 합쳐 TensorFlow임
텐서(Tensor)란?
- Tensor = Multidimensional Arrays = Data
- Tensor는 딥러닝에서 데이터를 표현하는 방식
- Tensor는 행렬로 표현할 수 있는 2차원 형태의 배열을 높은 차원으로 확장한 다차원 배열
ex1) 회색조(grayscale) 이미지는 하나의 채널(channel)에 2차원 행렬(배열)로 나타냄
ex2) RGB 이미지는 R, G, B 각 3개의 채널마다 2차원 행렬(배열)로 표현하는데, 이를 텐서(3차원의 값을 가지는 배열)로 표현
텐서플로우 관련 용어
- 노드(Node)
- 수학적인 연산 동작(Operation : + - * / )을 의미 - 엣지(Edge)
- 다차원 데이터 배열(텐서)을 의미
- 일반 엣지는 입력값이 텐서이며 하나의 명령어에 대한 출력 값은 다른 명령어의 입력 값이 됨
- 특수 엣지는 데이터의 연산 결과가 다른 에지의 입력값이 되지 않음. 두 노드 간의 제어 의존성을 정의 - 오퍼레이션(Operation)
- 그래프 상의 노드는 오퍼레이션(줄임말 op)으로 불림
- 오퍼레이션은 하나 이상의 텐서를 받을 수 있음
- 오퍼레이션은 연산을 수행하고, 결과를 하나 이상의 텐서로 반환할 수 있음 - 텐서(Tensor)
- 내부적으로 모든 데이터는 텐서를 통해 표현
- 텐서는 일종의 다차원 배열인데, 그래프 내의 오퍼레이션 간에는 텐서만이 전달 - 세션(Session)
- 그래프를 실행하기 위해서는 세션 객체가 필요
- 세션은 오퍼레이션의 실행 환경을 캡슐화한 것
- session.extend : 노드 추가 or 엣지(데이터) 추가
- session.run : 출력 - 변수(Variable)
- 변수는 그래프의 실행시, 패러미터를 저장하고 갱신하는데 사용
- 메모리 상에서 텐서를 저장하는 버퍼 역할 - placeholder
- 학습용 데이터를 담는 그릇으로 실행 시점에 데이터를 할당
- tf.placeholder(자료형, 행렬의 차원, placeholder이름) - Rank
- 텐서의 Rank는 몇 차원 배열이냐를 의미 - Shape
- 텐서의 차원과 크기
- 노드 사이를 흐르는 텐서의 프로퍼티
- 몇몇 연산은 그들의 입력의 구조에 대한 엄격한 요구조건을 가지고 있으며, 안맞을시 런타임에서 에러를 리포팅 - Type
- 텐서가 담을 수 있는 데이터의 타입을 의미
- tf.float32, tf.int32 등이 표현하는 바는 텐서가 실수를 담을 수 있는지 정수를 담을 수 있는지 여부
- 보통은 32로 끝나는 타입을 많이 사용
tensorflowkorea.gitbooks.io/tensorflow-kr/content/g3doc/resources/glossary.html
728x90
'데이터 분석 & 머신러닝' 카테고리의 다른 글
Kaggle(캐글) Titanic(타이타닉) 생존자 예측 (0) | 2021.02.04 |
---|---|
텐서플로우(Tensorflow) 변수와 상수 (0) | 2021.01.14 |
선형 회귀 인공지능 구현해보기 (0) | 2021.01.13 |
비용 함수(Cost Function) (0) | 2021.01.13 |
k-mean 클러스터링 (0) | 2021.01.12 |
Comments