본문 바로가기
Bigdata

딥러닝 - 텐서(Tensor)란?

by 올엠 2024. 8. 11.
반응형

텐서(Tensor)는 기본적으로 가장 임베딩전 특정 인덱스(Index)로 만들어진 다차원의 배열(array)로 이루어진 데이터 형태를 말한다.

여기에서 인덱스란 데이터를 컴퓨터가 이해할 수 있도록 변환된 값과 매칭되는 키라고 할 수 있다.

텐서는 배열을 표현하는 방식을 수학적으로 접근하여 얘기하는 것이고, 이를 프로그램 입장에서는 다차원(여러 차원)을 가진 배열이라고 할 수 있다.

그리고 텐서는 배열의 형태에 따라 다음과 같이 불리울 수 있다.

Rank Type(타입)

0 scalar(스칼라):     [1]

1 vector(벡터):       [1,1]

2 matrix(메트릭스): [[1,1],[1,1]]

3 3 tensor:            [[[1,1],[1,1]],[[1,1],[1,1]]]

n N tensor  

위에 우리가 알고 있는  스칼라, 벡터들이 이 배열을 타입이라고 할 수 있다.

그럼 조금 더 이해하기 위해서  만약에 아래와 같은 데이터가 있다고 생각하고 테스트는 0번 인덱스 첫번째 두번째 세번째는 각 1번, 2번 3번 인덱스를 사용한다고 가정해보자. 

인덱스 단어

0 테스트

1 첫번째

2 두번째

3 세번째

그리고 여기에 원 핫 인코딩 방식(One hot encoding vector, 1과 0으로 표현) 까지 더해져서 최종적으로 다음과 같은 모습이 된다.

 

인덱스 단어 원 핫 인코딩 방식(One hot encoding vector)

0 테스트 [1,0,0,0,0]

1 첫번째 [0,1,0,0,0]

2 두번째 [0,0,1,0,0]

3 세번째 [0,0,0,1,0]

4 네번째 [0,0,0,0,1]

이를 배열로 표현하면 다음과 같다. 

데이터 벡터화

테스트 첫번째 [[1,0,0,0,0],[0,1,0,0,0]]

테스트 두번째 [[1,0,0,0,0],[0,0,1,0,0]]

테스트 세번째 [[1,0,0,0,0],[0,0,0,1,0]]

테스트 네번째 [[1,0,0,0,0],[0,0,0,0,1]]

그리고 위 데이터를 보통 딥러닝에서는 한번에 데이터를 만들어 넣기 때문에 다시한번 아래와 같이 한번 더 배열을 합치게 된다.

 

[[[1,0,0,0,0],[0,1,0,0,0]],[[1,0,0,0,0],[0,0,1,0,0]],[[1,0,0,0,0],[0,0,0,1,0]],[[1,0,0,0,0],[0,0,0,0,1]]]

 

그래서 여기를 보면, []배열로 감싼 부분으로 tensor를 얘기할 수 있는데, 

이를 표현할 때에는 가장 큰 []배열부터 순차적으로 표현한다고 이해하면 된다.

예제를 예를 들면, []배열이 사용된 데이터 값이 총 4개 사용되었고, 각 []배열의 값은 2개로 이루어져 있고, 총 데이터에 표현된 인덱스는 5개 이기 때문에 다음과 같이 정리가 (4,2,5) 로 요약할 수 있고, 표현이 3개의 가능하기 때문에 3 tensor 라고 한다.

그림으로 정리해보면 다음과 같다.

여기에 colums 에 구분값이 추가된다면 어떻게 될까? 5 tensor 가 되며, 가장 마지막에 구분되는 값의 인덱스 크기를 기입하면 된다. 

즉 영어, 한글으로 데이터를 추가 구분을 한다면, 0,1 이 인덱스일 것이며, (4,2,2,5,2) 로 표현이 가능하다. 이유는 배열이 []추가되고 추가 된 배열의 크기, 이후 앞과 같이 각 컬럼 값인 (5, 2)을 표현해주면 된다.

 

 

 

 

 

반응형