우선 텐서(tensor)란? [출처 위키백과]
선형대수학에서, 다중선형사상(multilinear map)또는 텐서(tensor)는 선형 관계를 나타내는 다중선형대수의 대상이다. 19세기에 카를 프리드리히 가우스가 곡면에 대한 미분 기하학을 만들면서 도입하였다. 기본적인 예는 내적과 선형 변환이 있으며 미분 기하학에서 자주 등장한다. 텐서는 기저를 선택하여 다차원 배열로 나타낼 수 있으며, 기저를 바꾸는 변환 법칙이 존재한다. 텐서 미적분학에서는 리치 표기법, 펜로즈 표기법, 지표 표기법, 비교적 단순한 문맥에서 사용하는 아인슈타인 표기법 등의 다양한 표기법을 사용하여 텐서를 구체적으로 나타낸다.
와 같은 의미라고 한다. ㄷㄷㄷ. 어렵다. 매우 어렵다. 시작부터 하기 싫어진다. 그러나 위키백과에서 텐서플로를 검색하면 친절하게도 알기쉽게 아래와 같이 설명해주고 있다.
텐서플로(TensorFlow)는 다양한 작업에대해 데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리이다. 심볼릭 수학 라이브러리이자, 인공 신경망같은 기계 학습 응용프로그램에도 사용된다. 이것은 구글내 연구와 제품개발을 위한 목적으로 구글 브레인팀이 만들었고 2015년 11월 9일 아파치 2.0 오픈 소스 라이선스로 공개되었다.[3][1]
텐서(데이터)+플로(흐름) = 즉 데이터의 흐름이라는 아주 쉬운 용어로 재해석해주고 있다. 왜 이름부터 이렇게 살벌하게 지었을까? 아마도 데이터플로 라는 이름을 누가 먼저 쓰고 있었을지도 모른다. ㅎㅎㅎ
그렇다면 이러한 텐서가 딥러닝에서는 어떻게 사용되는지 간략하게 한번 짚고 넘어가보자.
우선 텐서플로에서는 가장 낮은 차원의 데이터 단위 스칼라, 그 다음 순위 벡터, 다음 행렬, 그리고 이러한 행렬을 요소로 가지는 데이터 단위를 3차 텐서, 그리고 3차 텐서를 요소로 가지는 데이터 단위를 4차 텐서....n-1차의 데이터 단위를 요소로 가지는 데이터 단위를 n 텐서라 한다.
이걸 왜 짚고 넘어가는 하면 1차원 어레이의 값은 슬라이싱이나 인덱싱을 아주 직관적으로 처리할 수 있다.
예 : arr = np.array([0,1,2,3,4,5,6])
arr[0] = 0
arr[2:5] = [2 3 4]
이런식으로 말이다.
그렇다면 이번에는
arr2 = np.array([[1,2,3], [4,5,6]])
arr2[0] = [1 2 3]
arr2[0][0] = 1
이것도 뭐 크게 어렵다고 생각이 안들 수 있다. 그러나 만약 arr3 = np.array([[[[1,2,3],,,, [40,50,60]]]]) 이런식의 다차원 어레이로 되면 저걸 슬라이싱하거나 인덱싱할 때 직관적으로 접근하기가 어려워진다.
따라서 무작정 시계열 분석부터 할려고 덤비기 전에 우선 텐서의 구조에 대한 기본적인 이해는 하고 뒤에 가서 막히는 경우를 방지할 수 있다. 그러면 다음 포스트에서는 파이썬(아나콘다)을 설치부터 하고 shape, rank, axis에 대해서 한번 연구해보자.
'텐서플로우' 카테고리의 다른 글
기계학습의 종류 - 오차기반 (0) | 2021.01.13 |
---|---|
기계학습의 종류 - 확률기반 (0) | 2021.01.10 |
기계학습의 종류 - 유사도 기반 (0) | 2020.12.22 |
기계학습의 종류 - 정보 기반 (0) | 2020.12.13 |
데이터구조 : Numpy 와 Pandas (0) | 2020.09.15 |
댓글