컴공생의 다이어리

텐서플로우(Tensorflow)란? 본문

데이터 분석 & 머신러닝

텐서플로우(Tensorflow)란?

컴공 K 2021. 1. 14. 02:13

텐서플로우(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로 끝나는 타입을 많이 사용

 

 

excelsior-cjh.tistory.com/148

 

[러닝 텐서플로]Chap01 - 텐서플로 란?

Chap01 - 개요 1.1 텐서플로 란? 텐서플로(TensorFlow)는 구글(Google)에서 만든, 딥러닝 프로그램을 쉽게 구현할 수 있도록 다양한 기능을 제공해주는 라이브러리다. 텐서플로 자체는 기본적으로 C++로

excelsior-cjh.tistory.com

yeongjin13.tistory.com/15

 

[Tensorflow 정리] 01. Tensorflow 란?

텐서플로우(TensorFlow)란? 데이터 그래프를 수치적으로 연산하기 위해 구글에서 만든 오픈 소스 라이브러리 입니다. 텐서플로우(TensorFlow)라는 이름처럼 텐서(Tensor) 다차원의 배열을 담고 있는 노

yeongjin13.tistory.com

pubdata.tistory.com/104

 

TensorFlow 프로그래밍 모델, 용어

[용어 정리] 데이터 플로우 그래프 : 텐서플로의 연산 모듬 그래프내의 노드 : 산술 연산자 에지: 텐서라고 명명된 다중 다차원 데이터 집합, 피연산자 -일반 에지: 입력값이 텐서이며 하나의 명

pubdata.tistory.com

jokerkwu.tistory.com/34

 

텐서플로우 기본개념

텐서플로우는 구조가 Data Flow graph 방식으로 구성되어 있으며 그래프는 노드와 노드를 연결하는 엣지로 구성된다. 노드는 수학적인 연산 동작(operation: + , - , * , / )을 의미하고 엣지는 데이터 배

jokerkwu.tistory.com

tensorflowkorea.gitbooks.io/tensorflow-kr/content/g3doc/resources/glossary.html

 

용어 · 텐서플로우 문서 한글 번역본

 

tensorflowkorea.gitbooks.io

728x90
Comments