ndarray와 거의 동일import torch
x = torch.tensor([[1,2], [3,4]])
이렇게 나뉠 수 있는데,
이것이 딥러닝에서는
이 내용들이 모두 텐서로 표현됨.
NumPy의 ndarray는 CPU 메모리에 존재하는 다차원 수치 배열
(참고 : GPU가속을 직접 제공하지 않을 뿐, CPU만을 요구하는 것은 아님)
import numpy as np
a = np.array([[1,2], [3,4]])
| 공통점 | 설명 |
|---|---|
| 다차원 구조 | n차원 배열 |
| 슬라이싱 | a[1:, ::2] 가능 |
| 브로드캐스팅 | 자동 차원 확장 |
| 벡터화 연산 | 루프 없이 연산 |
→ 문법과 사용 감각이 매우 유사하다!
| 항목 | PyTorch Tensor | NumPy Array |
|---|---|---|
| 자동 미분 | 지원 | 미지원 |
requires_grad | 있음 | 없음 |
x = torch.tensor(2.0, requires_grad=True)
y = x **2
y.backward()
print(x.grad)# 4.0
이것이 딥러닝의 핵심 기능이다.
| 항목 | PyTorch Tensor | NumPy Array |
|---|---|---|
| GPU 연산 | 가능 (CUDA) | 불가 |
| 장치 이동 | .to('cuda') | 없음 |
x = torch.tensor([1,2,3]).cuda()
cuda를 이용하여 대규모 딥러닝 연산이 더욱 용이하다
| 구분 | PyTorch | NumPy |
|---|---|---|
| 목적 | 딥러닝·자동 미분 | 범용 수치 계산 |
| 최적화 대상 | GPU / 신경망 | CPU 벡터 연산 |