PyTorch Tensor 생성 및 조작
PyTorch는 딥러닝 및 데이터 과학 분야에서 널리 사용되는 라이브러리로, 강력한 텐서(Tensor) 연산 기능을 제공합니다. 텐서는 다차원 배열 구조로, NumPy 배열과 유사하지만 GPU 가속을 지원하는 것이 특징입니다. 본 포스팅에서는 PyTorch의 Tensor 생성 방법과 다양한 조작 기법에 대해 설명합니다.
1. Tensor 생성
PyTorch에서는 다양한 방법으로 Tensor를 생성할 수 있습니다. 기본적인 생성 방법을 살펴보겠습니다.
1.1 torch.tensor()
를 이용한 생성
기존 리스트 또는 NumPy 배열을 사용하여 Tensor를 생성할 수 있습니다.
import torch
import numpy as np
# 리스트로부터 Tensor 생성
t1 = torch.tensor([1, 2, 3, 4, 5])
print(t1)
# NumPy 배열로부터 Tensor 생성
np_array = np.array([6, 7, 8, 9, 10])
t2 = torch.tensor(np_array)
print(t2)
1.2 torch.zeros()
, torch.ones()
, torch.full()
, torch.arange()
를 이용한 생성
특정 값으로 초기화된 Tensor를 생성할 수도 있습니다.
# 3x3 크기의 0으로 초기화된 Tensor 생성
t3 = torch.zeros(3, 3)
print(t3)
# 2x4 크기의 1로 초기화된 Tensor 생성
t4 = torch.ones(2, 4)
print(t4)
# 2x3 크기의 모든 요소를 7로 초기화한 Tensor 생성
t5 = torch.full((2, 3), 7)
print(t5)
# 특정 범위의 값으로 구성된 Tensor 생성
t6 = torch.arange(1, 10, 2) # 1부터 10까지 2씩 증가
print(t6)
1.3 torch.rand()
, torch.randn()
, torch.randint()
를 이용한 난수 Tensor 생성
PyTorch는 무작위 값을 갖는 Tensor를 생성하는 다양한 함수를 제공합니다.
# 2x3 크기의 [0,1) 범위에서 균등 분포를 따르는 난수 Tensor 생성
t7 = torch.rand(2, 3)
print(t7)
# 2x3 크기의 평균 0, 표준편차 1인 정규 분포를 따르는 난수 Tensor 생성
t8 = torch.randn(2, 3)
print(t8)
# 2x2 크기의 0부터 10 사이의 정수 난수 Tensor 생성
t9 = torch.randint(0, 10, (2, 2))
print(t9)
2. Tensor 조작
생성된 Tensor는 다양한 연산을 통해 조작할 수 있습니다. 여기서는 기본적인 변형, 인덱싱, 연산 등을 다룹니다.
2.1 Tensor의 형태 변경 (reshape()
, view()
)
Tensor의 크기(shape)를 변경할 수 있습니다.
# 3x3 크기의 0으로 초기화된 Tensor 생성
t10 = torch.zeros(3, 3)
# 1차원으로 변환
t11 = t10.view(9)
print(t11)
# 3x3을 1x9 형태로 변환
t12 = t10.reshape(1, 9)
print(t12)
2.2 Tensor의 차원 변경 (unsqueeze()
, squeeze()
)
unsqueeze()
와 squeeze()
를 사용하여 차원을 추가하거나 제거할 수 있습니다.
# 1차원 Tensor 생성
t13 = torch.tensor([1, 2, 3])
# 차원 추가
t14 = t13.unsqueeze(0) # (1,3) 형태
print(t14.shape)
# 차원 제거
t15 = t14.squeeze() # 다시 (3,) 형태
print(t15.shape)
2.3 Tensor의 인덱싱 및 슬라이싱
NumPy와 유사하게 Tensor에서도 인덱싱과 슬라이싱이 가능합니다.
# 3x3 Tensor 생성
t16 = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 특정 요소 접근
print(t16[0, 2]) # 첫 번째 행, 세 번째 열의 값
# 특정 행 접근
print(t16[1, :]) # 두 번째 행 전체
# 특정 열 접근
print(t16[:, 1]) # 두 번째 열 전체
2.4 Tensor 연산
Tensor 간 기본적인 연산도 지원됩니다.
# 두 개의 Tensor 생성
a = torch.tensor([1, 2, 3])
b = torch.tensor([4, 5, 6])
# 덧셈
print(a + b)
# 뺄셈
print(a - b)
# 곱셈
print(a * b)
# 나눗셈
print(a / b)
# 행렬 곱셈
a_mat = torch.tensor([[1, 2], [3, 4]])
b_mat = torch.tensor([[5, 6], [7, 8]])
print(torch.mm(a_mat, b_mat)) # 행렬 곱
3. 결론
이번 포스팅에서는 PyTorch에서 Tensor를 생성하는 다양한 방법과 기본적인 조작 방법에 대해 알아보았습니다. Tensor는 딥러닝 모델의 핵심 데이터 구조이며, PyTorch의 강력한 연산 기능을 활용하여 다양한 작업을 수행할 수 있습니다.
'PyTorch' 카테고리의 다른 글
PyTorch 이미지 데이터 및 텍스트 데이터 로딩 (0) | 2025.04.07 |
---|---|
PyTorch Dataset과 DataLoader 활용법 (0) | 2025.04.06 |
PyTorch Autograd 소개 (자동 미분) (0) | 2025.04.05 |
PyTorch Tensor와 NumPy 배열 비교 (0) | 2025.04.04 |
PyTorch란 무엇인가? (0) | 2025.04.02 |