개요
텐서(tensor)의 메타데이터란 텐서의 크기(size), 즉 형태(shape)와 텐서에 담긴 전체 요소(element) 개수를 의미합니다. 텐서의 크기는 .size() 메서드로, 형태는 .shape 속성으로 확인할 수 있습니다.
.size()와 .shape은 사용 방식만 다를 뿐 동일한 결과를 반환합니다. 한편 텐서에 포함된 총 요소 개수는 torch.numel() 함수를 사용해 구할 수 있습니다.
구현 단계
필요한 라이브러리를 임포트합니다. 이 글에서는 torch 라이브러리가 필요하므로 사전에 설치되어 있는지 확인하세요.
메타데이터를 확인할 PyTorch 텐서를 정의합니다.
텐서의 메타데이터를 조회합니다. .size()와 .shape으로 크기와 형태를 얻고, torch.numel()로 요소 개수를 계산합니다.
독자의 이해를 돕기 위해 텐서 자체와 메타데이터를 함께 출력합니다.
예제 1: 4×3 크기의 2차원 텐서
# 텐서의 메타데이터에 접근하는 파이썬 프로그램
# 필요한 라이브러리 임포트
import torch
# 4x3 크기의 텐서 생성
T = torch.Tensor([[1,2,3],[2,1,3],[2,3,5],[5,6,4]])
print("T:\n", T)
# 위 텐서 "T"의 크기 확인
size_T = T.size()
print("size of tensor T:\n", size_T)
# .shape 속성을 사용하는 또 다른 방법
print("Shape of tensor:\n", T.shape)
# 텐서 "T"의 요소 개수 확인
num_T = torch.numel(T)
print("Number of elements in tensor T:\n", num_T)
출력 결과
위 파이썬 3 코드를 실행하면 다음과 같은 결과가 출력됩니다.
T: tensor([[1., 2., 3.], [2., 1., 3.], [2., 3., 5.], [5., 6., 4.]]) size of tensor T: torch.Size([4, 3]) Shape of tensor: torch.Size([4, 3]) Number of elements in tensor T: 12
예제 2: 4×3×2 크기의 3차원 텐서
# 텐서의 메타데이터에 접근하는 파이썬 프로그램
# 필요한 라이브러리 임포트
import torch
# 난수로 이루어진 텐서 생성
T = torch.randn(4,3,2)
print("T:\n", T)
# 위 텐서 "T"의 크기 확인
size_T = T.size()
print("size of tensor T:\n", size_T)
# .shape 속성을 사용하는 또 다른 방법
print("Shape of tensor:\n", T.shape)
# 텐서 "T"의 요소 개수 확인
num_T = torch.numel(T)
print("Number of elements in tensor T:\n", num_T)
출력 결과
위 파이썬 3 코드를 실행하면 다음과 같은 결과가 출력됩니다.
T: tensor([[[-1.1806, 0.5569], [ 2.2237, 0.9709], [ 0.4775, -0.2491]], [[-0.9703, 1.9916], [ 0.1998, -0.6501], [-0.7489, -1.3013]], [[ 1.3191, 2.0049], [-0.1195, 0.1860], [-0.6061, -1.2451]], [[-0.6044, 0.6153], [-2.2473, -0.1531], [ 0.5341, 1.3697]]]) size of tensor T: torch.Size([4, 3, 2]) Shape of tensor: torch.Size([4, 3, 2]) Number of elements in tensor T: 24
마무리
정리하면, PyTorch 텐서의 메타데이터를 확인하는 핵심 방법은 세 가지입니다. .size() 메서드와 .shape 속성은 모두 각 차원의 크기를 담은 torch.Size 객체를 반환하며, torch.numel() 함수는 각 차원 크기를 모두 곱한 전체 요소 개수를 반환합니다. 위 예제에서 확인했듯이 4×3 텐서는 요소가 12개, 4×3×2 텐서는 24개입니다.