04. NumPy를 넘어 Tensor로 (feat. TensorFlow)
"NumPy에 제트 엔진(GPU)을 달면, 그게 바로 Tensor입니다."
우리는 지금까지 List (파이썬 기본) → NumPy / Pandas (데이터 과학)까지 왔습니다. 이제 마지막 단계, Tensor입니다. 이름이 낯설지만 겁먹을 필요 없습니다. 여러분이 배운 NumPy와 99% 똑같기 때문입니다.
1. 데이터의 진화 (Evolution)
데이터를 담는 그릇은 더 많은 데이터를, 더 빠르게 처리하기 위해 진화해왔습니다.
- 1단계 List: 무엇이든 담지만 느림 (만능 주머니)
- 2단계 NumPy: 숫자에 특화되어 빠름 (계산기)
- 3단계 Tensor: 하드웨어 가속을 받아 미친듯이 빠름 (슈퍼컴퓨터)
graph LR
List[/"List (Python)"/] -->|구조화| NumPy[("NumPy Array")]
NumPy -->|GPU 가속| Tensor[("Tensor (AI)")]
style List fill:#eee,stroke:#333
style NumPy fill:#ffecb3,stroke:#ff6f00
style Tensor fill:#ffccbc,stroke:#d84315,stroke-width:4px
2. 코드 비교: 쌍둥이 문법
Google이 만든 TensorFlow나 Meta가 만든 PyTorch 모두 NumPy를 본따서 만들었습니다. 얼마나 비슷한지 확인해볼까요?
import numpy as np
import tensorflow as tf
# NumPy로 만들기
n_arr = np.array([1, 2, 3])
print(n_arr.shape) # (3,)
# Tensor로 만들기
t_arr = tf.constant([1, 2, 3])
print(t_arr.shape) # (3,)
함수 이름까지 거의 똑같습니다. (np.add, tf.add / np.mean, tf.reduce_mean 등)
즉, NumPy를 잘하면 딥러닝 코딩의 절반은 먹고 들어가는 겁니다.
3. 결정적 차이: Device (어디서 계산할까?)
가장 큰 차이점은 데이터가 존재하는 '장소'입니다.
- NumPy: 무조건 컴퓨터의 메인 메모리(RAM)에만 삽니다. CPU가 일합니다.
- Tensor: 그래픽 카드 메모리(VRAM)로 이사 갈 수 있습니다. GPU가 일합니다.
딥러닝은 단순한 더하기/곱하기를 수조 번 반복하는 작업입니다. 이 작업에서는 똑똑한 박사님 1명(CPU)보다, 단순 계산을 잘하는 초등학생 5,000명(GPU 코어)이 훨씬 빠릅니다.
graph TB
subgraph Computer["내 컴퓨터"]
CPU["CPU (박사님 1명)<br>NumPy"]
GPU["GPU (초등학생 5000명)<br>Tensor"]
end
Data[데이터] --> CPU
Data --> |".to('cuda')"| GPU
style CPU fill:#e1f5fe,stroke:#01579b
style GPU fill:#fce4ec,stroke:#c2185b
설계자의 시선: Context Switching
데이터를 CPU에서 GPU로 옮기는 비용은 생각보다 비쌉니다. (이사 비용)
- 데이터가 적을 때: 그냥 CPU(NumPy)로 하는 게 빠릅니다.
- 데이터가 거대할 때: 이사 비용을 감수하고서라도 GPU(Tensor)로 옮기는 게 이득입니다.
설계자는 "이 작업이 굳이 비싼 GPU를 쓸 만큼 무거운가?"를 항상 고민해야 합니다.
🎉 4부 마무리
축하합니다! 여러분은 이제 파이썬의 기본 리스트부터 시작해, AI의 언어인 Tensor까지 데이터 구조의 모든 계단을 밟았습니다.
- List: 잡동사니 주머니
- NumPy: 고속 계산용 행렬
- Pandas: 분석용 엑셀 시트
- Tensor: AI 학습용 가속 행렬
이제 "데이터를 요리할 준비"는 끝났습니다. 하지만 이 많은 데이터를 가지고 더 복잡한 프로그램을 만들려면 설계도가 필요합니다.
다음 5부 파이썬 객체지향 기초에서는 이 복잡한 세상을 '객체(Object)'와 '클래스(Class)'로 설계하는 법을 배웁니다. 이것이 AI와 소통하는 또 다른 핵심 언어입니다.