파이토치에서 생성기로부터 토치 텐서 생성하기
파이토치에서 생성기로부터 토치 텐서 생성하기
torch.randn() 및 torch.rand() 함수 사용:
torch.randn()
: 평균 0, 표준편차 1인 정규 분포에서 샘플링된 값으로 텐서를 생성합니다.
예시:
import torch
# 생성기 인스턴스 생성
generator = torch.Generator()
# 생성기를 사용하여 텐서 생성
randn_tensor = torch.randn(5, 5, generator=generator)
rand_tensor = torch.rand(5, 5, generator=generator)
print(randn_tensor)
print(rand_tensor)
torch.manual_seed() 함수 사용:
torch.manual_seed()
함수를 사용하여 생성기의 시드를 설정할 수 있습니다.
import torch
# 시드 설정
torch.manual_seed(1234)
# 생성기 인스턴스 생성
generator = torch.Generator()
# 생성기를 사용하여 텐서 생성
tensor1 = torch.randn(5, 5, generator=generator)
# 시드 재설정
torch.manual_seed(5678)
# 동일한 생성기를 사용하여 텐서 생성
tensor2 = torch.randn(5, 5, generator=generator)
print(tensor1)
print(tensor2)
torch.distributions 모듈 사용:
- 다양한 확률 분포에서 샘플링된 값으로 텐서를 생성할 수 있습니다.
import torch
from torch.distributions import normal
# 정규 분포 인스턴스 생성
normal_dist = normal.Normal(mean=0, stddev=1)
# 생성기를 사용하여 텐서 생성
tensor = normal_dist.sample((5, 5), generator=generator)
print(tensor)
참고:
- 생성기를 사용하면 텐서 생성 과정을 반복 가능하게 만들 수 있습니다.
- 생성기의 시드를 설정하면 텐서 생성 결과를 제어할 수 있습니다.
예제 코드
torch.randn() 및 torch.rand() 함수 사용
import torch
# 생성기 인스턴스 생성
generator = torch.Generator()
# 생성기를 사용하여 텐서 생성
randn_tensor = torch.randn(5, 5, generator=generator)
rand_tensor = torch.rand(5, 5, generator=generator)
print(randn_tensor)
print(rand_tensor)
torch.manual_seed() 함수 사용
import torch
# 시드 설정
torch.manual_seed(1234)
# 생성기 인스턴스 생성
generator = torch.Generator()
# 생성기를 사용하여 텐서 생성
tensor1 = torch.randn(5, 5, generator=generator)
# 시드 재설정
torch.manual_seed(5678)
# 동일한 생성기를 사용하여 텐서 생성
tensor2 = torch.randn(5, 5, generator=generator)
print(tensor1)
print(tensor2)
torch.distributions 모듈 사용
import torch
from torch.distributions import normal
# 정규 분포 인스턴스 생성
normal_dist = normal.Normal(mean=0, stddev=1)
# 생성기를 사용하여 텐서 생성
tensor = normal_dist.sample((5, 5), generator=generator)
print(tensor)
- 각 예시 코드는 5행 5열 크기의 텐서를 생성합니다.
torch.distributions
모듈을 사용하면 다양한 확률 분포에서 샘플링된 값으로 텐서를 생성할 수 있습니다.
파이토치에서 생성기로부터 토치 텐서 생성: 대체 방법
- NumPy 배열을 생성하고
torch.from_numpy()
함수를 사용하여 토치 텐서로 변환할 수 있습니다.
import numpy as np
import torch
# NumPy 배열 생성
np_array = np.random.randn(5, 5)
# NumPy 배열을 토치 텐서로 변환
tensor = torch.from_numpy(np_array)
print(tensor)
Python 리스트 사용:
- Python 리스트를 생성하고
torch.tensor()
함수를 사용하여 토치 텐서로 변환할 수 있습니다.
import torch
# Python 리스트 생성
list_data = [1, 2, 3, 4, 5]
# 리스트를 토치 텐서로 변환
tensor = torch.tensor(list_data)
print(tensor)
직접 텐서 값 지정:
torch.Tensor()
함수를 사용하여 텐서 크기를 지정하고 직접 값을 채워 넣을 수 있습니다.
import torch
# 텐서 크기 지정
tensor = torch.Tensor(5, 5)
# 텐서 값 직접 채워넣기
for i in range(5):
for j in range(5):
tensor[i][j] = i * j
print(tensor)
- NumPy 배열을 사용하는 방법은 가장 빠르고 효율적인 방법입니다.
- Python 리스트를 사용하는 방법은 간단하지만 NumPy 배열을 사용하는 방법보다 느릴 수 있습니다.
- 직접 텐서 값을 지정하는 방법은 가장 유연하지만 코드가 복잡해질 수 있습니다.
pytorch