딥러닝(Deep Learning)의 데이터 표현, 텐서(Tensor)

    텐서(Tensor)의 개념

    텐서(Tensor)는 머신러닝에서 사용하는 데이터 구조이며 기본 구성 요소입니다. 우리가 잘 알고 있는 텐서플로우 (Tensorflow) 역시 이 데이터를 구성하는 요소에서 따온 말입니다. 텐서는 데이터를 전달해주기 위한 컨테이너(Container)라고 생각해도 되는데요. 텐서는 사실 수학에서 사용하는 용어로 벡터 계산을 단순화하기 위해 같은 성질의 벡터들을 한 행렬 안에 표기하고 단순화하여 표기한 것이기도 합니다.

     

    딥러닝(Deep Learning)의 데이터 표현, 텐서(Tensor)


     

    텐서의 종류

    스칼라(Scalar) = Rank-0 Tensor = 0D Tensor

    하나의 숫자값을 담을 수 있는 텐서를 스칼라(Scalar)라고 합니다. 우리가 흔히 숫자형으로 이루어진 변수에 값을 하나 담았다면 이 값은 딥러닝에서는 스칼라라고 합니다. 스칼라는 0 D(Dimention) 텐서 혹은 랭크 0 텐서라고도 합니다만 일반적으로 스칼라라고 합니다.

     

    벡터(Vector) = Rank-1 Tensor = 1D Tensor

    스칼라값들이 여러개 있어서 하나의 배열을 이루고 있다면, 벡터(Vector)라고 합니다. 

     

    벡터 예시

    x = np.array([0,1,2,3,4,5,6,7,8,9])
    print(x.ndim)
    
    # 1

     

    스칼라를 0 D, Rank 0 Tensor이라고 하기 때문에 위와 같이 스칼라의 배열로 이루어진 데이터는 1D Tensor 혹은 Rank 1  Tensor라고도 합니다. 참고로 예시로 적은 0부터 9이라는 숫자값들의 수가 총 10개로 이루어졌지만 배열이라 1차원 벡터라 생각하실 수 있지만, 10차원 벡터라는 말을 합니다. 다만 차원이라는 용어는 Feature의 개수 뿐만 아니라 축의 개수 둘다 혼용되기 때문에 헷갈릴 수 있습니다.

     

    행렬(Matrix) = Rank-2 Tensor = 2D Tensor

    한방향으로 이루어진 벡터에 하나의 축이 추가로 생기면 행과 열이 이루어지면서 행렬(Matrix)이 되는 것을 잘 알고 있을 것입니다. 행렬은 랭크 2 Tensor라고 하거나 2D Tensor라고도 합니다. 사실 행렬은 쉽게 볼 수 있는데요. 바로 엑셀과 같은 표를 생각하면 됩니다.

     

    행렬 예시

    x = np.array([[1,2,3], [4,5,6]])              
    print(x.dim)
    
    # 2

    위의 데이터를 기준으로 0번째의 행은 1,2,3이 되며, 0번째의 열은 1,4가 됩니다.


    행렬부터는 별도의 용어가 존재하지 않습니다. 그 이후부터는 Rank-n Tensor, nD Tensor 라고 말을 하면 됩니다. 예를 들어 5차원의 데이터라고 한다면, Rank-5 Tensor 혹은 5D Tensor 즉 5차원 텐서라고 말을 하면 되는 것이죠. 

    반응형

    댓글

    Designed by JB FACTORY