파이썬과 딥러닝에서 필수! Tensor 완벽 이해 및 활용법
딥러닝을 배우다 보면 빠질 수 없는 단어가 바로 'Tensor'입니다. 이 개념은 구글의 TensorFlow, PyTorch 같은 최신 AI 라이브러리의 중심축이기도 하죠. 사실, Tensor는 선형대수의 관점에서 보면 벡터와 행렬의 확장판입니다. 이 글에서는 Tensor가 정확히 무엇인지, 파이썬에서 NumPy로 다루는 방법, 그리고 실전 연산까지 한 번에 정리해드립니다.
Tensor 개념과 구조, 왜 중요한가?
Tensor를 쉽게 설명하자면, 다양한 차원을 가진 숫자 모음 하나의 그리드입니다. 벡터는 한 줄(1차원), 행렬은 표(2차원), Tensor는 여러 겹을 더 씌운 다차원 배열입니다. 그래서 3차원이면 여러 개의 행렬이 층층이 쌓인 모습이죠. Tensor 표기법은 행렬과 비슷하게 대문자와 아래 첨자를 사용하는데, 이 덕분에 복잡한 수식도 구조적으로 나타낼 수 있습니다. 실제로 Tensor는 물리학, 공학, 그리고 딥러닝의 데이터와 모델 표현에서 핵심 역할을 합니다.
파이썬에서 Tensor 직접 만들어보기
파이썬에서는 Tensor를 NumPy의 ndarray 객체로 손쉽게 만들 수 있습니다. 예를 들어, 3x3x3짜리 Tensor라면 세 겹의 3x3 행렬을 배열 형태로 묶어주면 끝!
from numpy import array
T = array([
[[1,2,3],[4,5,6],[7,8,9]],
[[11,12,13],[14,15,16],[17,18,19]],
[[21,22,23],[24,25,26],[27,28,29]],
])
print(T.shape) # (3, 3, 3)
print(T)여기서 첫 번째 숫자(3)는 층, 두 번째는 행, 세 번째는 열의 개수를 의미합니다. 실제 결과는 각 레이어별로 행렬이 쌓여 있는 형태로 보여집니다.
요소별 Tensor 연산 실전 가이드
Tensor를 다루는 재미가 시작되는 곳은 바로 연산입니다! 같은 구조를 가진 두 Tensor끼리는 더하기, 빼기, 곱하기, 나누기를 '요소별'로 바로 실행할 수 있습니다.
Tensor 더하기 두 Tensor의 각 자리 숫자를 그대로 더하면 새로운 Tensor가 생성됩니다.
C = A + B # 같은 형태의 두 TensorTensor 빼기 각 요소끼리 빼서 새로운 Tensor를 만듭니다.
C = A - BTensor 하다마르 곱(요소별 곱) 행렬에서 하다마르 곱처럼, Tensor도 자리마다 곱할 수 있습니다.
C = A * BTensor 나누기 자리마다 나눗셈을 하면 역시 Tensor가 나옵니다.
C = A / B
이런 요소별 연산은 데이터 전처리, 이미지 처리, 그리고 딥러닝의 수많은 계산에서 빠르게 쓰이는 필수 기능입니다.
Tensor 곱셈의 세계: tensordot으로 차원 확장하기
단순한 곱이 아닌, Tensor와 Tensor 사이의 '곱셈'은 차원을 늘리는 마법과도 같습니다. 파이썬 NumPy의 tensordot 함수를 사용하면 두 Tensor를 여러 방식으로 곱해볼 수 있습니다.
예를 들어, 1차원 벡터 두 개를 곱하면 2차원 행렬이 됩니다.
from numpy import array, tensordot
A = array([1, 2])
B = array([3, 4])
C = tensordot(A, B, axes=0)
print(C) # [[3 4], [6 8]]이 함수는 두 Tensor의 축도 지정하면서 원하는 곱을 만들 수 있기 때문에, 복잡한 모델에서도 아주 유용하게 사용됩니다.
실습 확장하기: 직접 Tensor 데이터로 손풀기
초보자라도 직접 Tensor 연산을 구현해보면 개념이 쏙쏙 이해됩니다.
자신만의 작은 Tensor 배열을 만들어보세요.
하다마르 곱뿐 아니라 다양한 Tensor 곱셈(ex. 내적, 수축)도 실험해보면 좋습니다.
각 연산을 함수로 직접 작성해보고, 반복 실행하며 구조를 익히세요.
이렇게 손으로 직접 부딪혀 보면 수식을 보는 것보다 데이터 사이의 관계가 눈에 들어옵니다.
더 깊이 배우고 싶은 사람을 위한 추천 리소스
Tensor 연산과 대수학은 깊이 들어갈수록 재미가 있습니다! 관련 도서와 공식 문서, 위키피디아 기사들이 큰 도움이 됩니다.
<벡터와 Tensor에 대한 학생 안내서>
<행렬 계산>, <Tensor 대수 및 Tensor 분석>
NumPy 공식 ndarray, tensordot 문서
위키피디아: Tensor, Tensor 곱, Tensor 대수 등
마무리: Tensor, 공포 대신 즐거움으로
딥러닝, 머신러닝을 시작하다 보면 'Tensor'가 너무 추상적으로 느껴질 수도 있습니다. 하지만 한 번만 파이썬과 NumPy로 직접 만져보고, 요소별 연산이나 곱셈을 직접 해본다면 데이터 구조와 수식의 연결고리가 명확히 보일 거예요. Tensor가 궁금하다면 주저하지 말고, 간단한 예제부터 직접 만들어보고 더 복잡한 구조도 하나씩 탐구해보세요. 이 과정을 통해 튼튼한 AI·데이터 사이언스 실력을 쌓을 수 있습니다!
출처 및 참고:
https://www.nepirity.com/blog/introduction-to-tensors-for-machine-learning/
