PyTorch
PyTorch는 간편한 딥러닝 API를 제공하며, 머신러닝 알고리즘을 구현하고 실행하기 위한 확장성이 뛰어난 멀티플랫폼 프로그래밍 인터페이스(Raschka, Liu & Mirjalili, 2022)
PyTorch는 Windows, macOS, Linux 등 다양한 환경에서 사용 가능하며 Python, C++, Java 언어를 지원
API의 간편성과 Pythonic 특징 때문에 사용성이 좋다
PyTorch GitHub, PyTorch Tutorials 등 활발한 커뮤니티와 생태계가 구축되어 있음
연산 속도와 효율성이 뛰어나며 GPU를 지원함
API
란?API(Application Programming Interface)란 응용 프로그램이 서로 상호작용하는데 사용하는
명령어, 함수, 프로토콜의 집합을 의미함
Tensor
- Tensor는 PyTorch의 핵심 데이터 구조로서, NumPy의 다차원 배열과 유사한 형태로
데이터를 표현함
# 0-D Tensor(=Scalar)
# 하나의 숫자로 표현되는 양
a = torch.tensor(36.5)
# 1-D Tensor(=Vector)
# 순서가 지정된 여러 개의 숫자들이 일렬로 나열된 구조
b = torch.tensor([175, 60, 81, 0.8, 0.9])
# 2-D Tensor(=Matrix)
# 동일한 크기를 가진 1D Tensor들이 모여서 형성한, 행과 열로 구성된 사각형 구조
# (예시) 그레이 스케일 이미지 : 각 픽셀이 빛의 양을 의미하는 하나의 값을 가짐
c = torch.tensor([[77, 114, 140, 191],
[39, 56,46, 119],
[61, 29, 20, 33]])
# 3-D Tensor
# 동일한 크기의 2-D Tensor들이 여러 개 쌓여 형성된 입체적인 배열 구조
# (예시) 컬러 이미지 : 각 픽셀마다 R/G/B와 대응되는 3개의 요소 값 가짐
# 컬러 이미지는 투명도를 의미하는 A(알파) 채널을 추가할 수도 있음
d = torch.tensor([[[255, 0, 0],
[0, 255, 0]],
[[0, 0, 255],
[255, 255, 0]]])
PyTorch 데이터 타입
데이터 타입(dtype) | 유형 | 비트 | 범위 | 비고 |
---|---|---|---|---|
torch.uint8 | 정수형 | 8 | 0~255 정수 | 부호 없음 |
torch.int8 | 정수형 | 8 | -128 ~ 127 정수 | 부호 있음 |
torch.int16 또는 torch.short | 정수형 | 16 | -32,768 ~ 32,7677 정수 | |
torch.int32 또는 torch.int | 정수형 | 32 | -2,147,483,648 ~ 2,147,483,647 정수 | 표준적인 정수 크기로 사용 |
torch.int64 또는 torch.long | 정수형 | 64 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 정수 | |
torch.float32 또torch.float | 실수형 | 32 | 부호 (1비트) / 지수부 (8비트) / 가수부 (23비트) | 32비트 부동 소수점 수 |
torch.float64 또는 torch.double | 실수형 | 64 | 부호 (1비트) / 지수부 (11비트) / 가수부 (52비트) | 64비트 부동 소수점 수 |
타입 캐스팅
PyTorch에서 타입 캐스팅은 한 데이터 타입을 다른 데이터 타입으로 변환하는 것
(예시) j = i.float()
k = i.double()
Tensor 기초 함수 및 메서드
mIn() | Tensor의 모든 요소들 중 최소값을 반환하는 함수 |
---|---|
max() | Tensor의 모든 요소들 중 최대값을 반환하는 함수 |
sum() | Tensor의 모든 요소들의 합을 계산하는 함수 |
prod() | Tensor의 모든 요소들의 곱을 계산하는 함수 |
mean() | Tensor의 모든 요소들의 평균을 계산하는 함수 |
var() | Tensor의 모든 요소들의 표본분산을 계산하는 함수 |
std() | Tensor의 모든 요소들의 표본표준편차를 계산하는 함수 |
t.dim() | Tensor t의 차원의 수를 확인하는 메서드 |
t.size() 또는 t.shape() | Tensor t의 크기(모양)을 확인하는 메서드 (또는 속성) |
t.numel() | Tensor t에 있는 요소의 총 개수를 확인하는 메서드 |
표본분산
표본 : 과학적인 방법으로 모집단에서 추출한 일부 데이터의 집합
모집단 : 연구 또는 조사에서 관심의 대상이 되는 전체 집단을 의미
표본분산
- 주어진 표본 데이터 집합의 분포 정도를 나타내는 통계량으로, 데이터가 평균값을 중심으로 얼마나 퍼져 있는지를 제곱한 값의 평균으로 계산함
- 단, 전체 표본의 개수에서 1을 뺐을 때 더 정확한 분산이 도출되므로 수식 표현에서와 같이 1을 뺀
(n-1)로 계산하며, 이를 자유도라고 함
$$
S^2=\frac{1}{(n-1)}\sum_{i=1}^{n}(x_{i}-\overline{x})^2 (\overline{x}:평균)
$$
표본표준편차 : 표본분산값에 루트를 해서 구할 수 있음
'Study - AI > Torch & Tensor' 카테고리의 다른 글
이진 분류 알고리즘 & 배치(Batch) (0) | 2025.01.03 |
---|---|
Tensor 연산 방식 (0) | 2025.01.03 |
Tensor 생성 및 변환 (0) | 2025.01.02 |