텐서(인공지능)

Tensor

여러 데이터를 한 번에 표현할 수 있는 방식 중 하나이다.
랭크1)가 증가할수록 더 많은 데이터를 동시에 표현할 수 있다. 대표적으로 0랭크인 스칼라, 1랭크인 벡터 등이 텐서에 해당된다.

텐서는 핵심 속성으로 랭크, 크기, 데이터 타입을 갖고 있다.

  • 랭크(Rank): 텐서가 몇 차원의 데이터를 표현하는 지를 의미한다. 0 이상의 정수를 값으로 가질 수 있다.
  • 크기(Shape): 텐서가 각 축을 따라 몇 개의 차원을 갖고 있는 지를 나타낸다. 2×3 배열이 있다고 가정할 때 '2×3'이 크기에 해당된다. 이 때 (2, 3)의 크기를 갖고 있다고 표현한다.
  • 데이터 타입(Type): 텐서가 어떤 타입의 데이터를 갖고 있는 지를 의미한다.

파이썬 내장 클래스인 리스트로도 텐서를 표현할 수 있지만 데이터 타입을 고정할 수 없고, 크기를 간단하게 알아낼 수 없다는 한계가 있기에 주로 NumPy 라이브러리의 array를 사용해 구현한다.

표현하려는 텐서를 다차원 배열로 표현한 뒤 numpy.array() 메소드의 매개변수로 넣어주면 된다.

import numpy as np
 
arr = [[1, 2, 3], [4, 5, 6]]
t = np.array(arr)
 
print(t)
[[1 2 3]
 [4 5 6]]

객체변수 ndim, shape, dtype를 통해 텐서의 랭크, 크기, 데이터 타입을 알 수 있다.

print("t의 랭크:", t.ndim)
print("t의 크기:", t.shape)
print("t의 데이터 타입:", t.dtype)
t의 랭크: 2
t의 크기: (2, 3)
t의 데이터 타입: dtype('int32')

1)
텐서의 축 개수를 의미하며, 차수, 차원수, 순위 등으로도 불린다.