텐서
텐서(Tensor)는 수학, 물리학, 컴퓨터 과학 등 다양한 분야에서 사용되는 다차원 배열입니다. 스칼라, 벡터, 행렬을 일반화한 개념으로, 데이터를 표현하고 변환하는 데 핵심적인 역할을 합니다.
개요
텐서는 다음과 같은 특징을 가집니다.
- 차원 (Dimension 또는 Rank): 텐서가 가지는 축의 개수를 의미합니다. 스칼라는 0차원 텐서, 벡터는 1차원 텐서, 행렬은 2차원 텐서입니다. 3차원 이상의 텐서도 존재할 수 있습니다.
- 모양 (Shape): 각 축의 길이를 나타내는 튜플입니다. 예를 들어, 3x4 행렬의 모양은 (3, 4)입니다.
- 성분 (Component): 텐서를 구성하는 개별 값입니다. 각 성분은 인덱스에 의해 접근됩니다.
예시
- 스칼라: 하나의 숫자 (예: 5, -2.3, π) - 0차원 텐서
- 벡터: 숫자의 1차원 배열 (예: [1, 2, 3], [4.5, 6.7, 8.9]) - 1차원 텐서
- 행렬: 숫자의 2차원 배열 (예: [[1, 2], [3, 4], [5, 6]]) - 2차원 텐서
- 3차원 텐서: 이미지 데이터 (높이, 너비, 채널)
활용
텐서는 특히 다음과 같은 분야에서 널리 사용됩니다.
- 선형대수학: 벡터 공간과 선형 변환을 표현하고 계산하는 데 사용됩니다.
- 물리학: 물리량을 나타내고 물리 법칙을 기술하는 데 사용됩니다 (예: 응력 텐서, 전자기장 텐서).
- 머신러닝: 특히 딥러닝에서 신경망의 입력, 가중치, 활성값 등을 텐서로 표현하고 연산합니다. 텐서플로우(TensorFlow), 파이토치(PyTorch) 등의 딥러닝 프레임워크는 텐서 연산을 효율적으로 처리하기 위한 도구를 제공합니다.
텐서 연산
텐서에 대한 다양한 연산이 정의되어 있으며, 이러한 연산들은 데이터를 변환하고 분석하는 데 사용됩니다. 일반적인 텐서 연산으로는 덧셈, 뺄셈, 곱셈(점곱, 외적 등), 전치, 스칼라 곱, 행렬 곱 등이 있습니다. 또한, 텐서의 특정 부분을 추출하거나 형태를 변경하는 연산도 자주 사용됩니다.