PyTorch: 텐서의 형태를 리스트 형태로 얻는 방법
PyTorch: 텐서의 형태를 리스트 형태로 얻는 방법
다음은 텐서의 형태를 리스트 형태로 얻는 몇 가지 방법입니다.
torch.Tensor.size() 사용
torch.Tensor.size()
메서드는 텐서의 형태를 튜플 형태로 반환합니다. 튜플을 리스트로 변환하려면 list()
함수를 사용할 수 있습니다.
import torch
# 텐서 생성
x = torch.randn(3, 4, 5)
# 텐서 형태 튜플 얻기
size_tuple = x.size()
# 튜플을 리스트로 변환
size_list = list(size_tuple)
print(size_list)
출력:
[3, 4, 5]
len() 함수 사용
len()
함수는 텐서의 차원 수를 반환합니다. 각 차원의 길이를 얻으려면 for 루프를 사용하여 텐서를 반복할 수 있습니다.
# 텐서 생성
x = torch.randn(3, 4, 5)
# 텐서 차원 수 얻기
num_dims = len(x)
# 텐서 형태 리스트 생성
size_list = []
for i in range(num_dims):
size_list.append(x.size(i))
print(size_list)
[3, 4, 5]
torch.Tensor.view()
메서드는 텐서의 형태를 변경하는 데 사용할 수 있습니다. 텐서를 1차원 텐서로 변환한 후 list()
함수를 사용하여 텐서의 형태를 리스트 형태로 얻을 수 있습니다.
# 텐서 생성
x = torch.randn(3, 4, 5)
# 텐서를 1차원 텐서로 변환
x = x.view(-1)
# 텐서 형태 리스트 얻기
size_list = list(x.size())
print(size_list)
[60]
torch.numel() 사용
torch.numel()
함수는 텐서의 총 요소 수를 반환합니다. 텐서의 각 차원의 길이를 계산하려면 텐서의 총 요소 수를 각 차원의 길이로 나눌 수 있습니다.
import torch
# 텐서 생성
x = torch.randn(3, 4, 5)
# 텐서 총 요소 수 얻기
num_elements = torch.numel(x)
# 텐서 형태 리스트 생성
size_list = []
for i in range(x.dim()):
size_list.append(num_elements // x.size(i))
print(size_list)
[3, 4, 5]
예제 코드
import torch
# 텐서 생성
x = torch.randn(3, 4, 5)
# 방법 1: torch.Tensor.size() 사용
size_tuple = x.size()
size_list = list(size_tuple)
# 방법 2: len() 함수 사용
num_dims = len(x)
size_list = []
for i in range(num_dims):
size_list.append(x.size(i))
# 방법 3: torch.Tensor.view() 사용
x = x.view(-1)
size_list = list(x.size())
# 방법 4: torch.numel() 사용
num_elements = torch.numel(x)
size_list = []
for i in range(x.dim()):
size_list.append(num_elements // x.size(i))
# 결과 출력
print(size_list)
[3, 4, 5]
참고:
- 텐서의 형태는 텐서의 차원 수와 각 차원의 길이를 나타냅니다.
- 텐서의 형태를 리스트 형태로 얻는 방법은 여러 가지가 있습니다.
- 자신에게 가장 적합한 방법을 선택하여 사용하십시오.
텐서의 형태를 리스트 형태로 얻는 대체 방법
import torch
# 텐서 생성
x = torch.randn(3, 4, 5)
# 텐서 형태 튜플 얻기
size_tuple = x.shape
# 튜플을 리스트로 변환
size_list = list(size_tuple)
print(size_list)
[3, 4, 5]
__len__ 메서드 사용
# 텐서 생성
x = torch.randn(3, 4, 5)
# 텐서 차원 수 얻기
num_dims = len(x)
# 텐서 형태 리스트 생성
size_list = []
for i in range(num_dims):
size_list.append(x.size(i))
print(size_list)
[3, 4, 5]
numpy.array() 사용
numpy.array()
함수를 사용하여 텐서를 NumPy 배열로 변환한 후 shape
속성을 사용하여 텐서의 형태를 리스트 형태로 얻을 수 있습니다.
import numpy as np
# 텐서 생성
x = torch.randn(3, 4, 5)
# 텐서를 NumPy 배열로 변환
x_numpy = np.array(x)
# 텐서 형태 리스트 얻기
size_list = list(x_numpy.shape)
print(size_list)
[3, 4, 5]
torch.prod() 함수 사용
torch.prod()
함수를 사용하여 텐서의 총 요소 수를 계산한 후 각 차원의 길이를 계산할 수 있습니다.
import torch
# 텐서 생성
x = torch.randn(3, 4, 5)
# 텐서 총 요소 수 얻기
num_elements = torch.prod(torch.tensor(x.size()))
# 텐서 형태 리스트 생성
size_list = []
for i in range(x.dim()):
size_list.append(num_elements // x.size(i))
print(size_list)
[3, 4, 5]
python pytorch tensor