본문 바로가기
함수 설명/인공지능 (Pytorch)

[PyTorch] 정규분포 랜덤의 마법: torch.randn() 함수 활용법

by First Adventure 2024. 7. 17.
반응형

소개

  torch.randn 함수는 PyTorch에서 주어진 크기의 텐서를 생성하고, 평균이 0이고 표준 편차가 1인 정규분포를 따르는 무작위 실수들로 초기화하는 함수입니다. 이 함수는 신경망의 가중치를 초기화하거나, 다양한 머신러닝 및 데이터 분석 작업에서 랜덤 데이터 샘플을 생성하는 데 유용하게 사용됩니다.

 

기본 사용법

상세 설명

  • torch.randn 함수의 기본 구문은 torch.randn(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)입니다.
    • size: 생성할 텐서의 크기를 나타내는 정수 또는 튜플.
    • out: 결과 텐서를 저장할 텐서.
    • dtype: 텐서의 데이터 타입을 지정합니다. 예: torch.float32, torch.float64.
    • layout: 텐서의 메모리 레이아웃을 지정합니다. 기본값은 torch.strided.
    • device: 텐서가 할당될 장치를 지정합니다. 예: torch.device('cpu'), torch.device('cuda').
    • requires_grad: True로 설정하면 텐서에 대한 연산 기록을 추적하여 자동 미분을 수행할 수 있습니다.

예시 설명

  • torch.randn(5)는 평균 0, 표준편차 1의 정규분포를 따르는 랜덤한 값을 가지는 길이 5의 1차원 텐서를 생성합니다.
  • torch.randn(2, 3)는 평균 0, 표준편차 1의 정규분포를 따르는 랜덤한 값을 가지는 2x3 크기의 2차원 텐서를 생성합니다.
  • torch.randn(2, 2, dtype=torch.float32)는 평균 0, 표준편차 1의 정규분포를 따르는 랜덤한 값을 가지는 2x2 크기의 부동 소수점 텐서를 생성합니다.
  • torch.randn(3, 3, device=torch.device('cuda'))는 CUDA 장치(GPU)에 평균 0, 표준편차 1의 정규분포를 따르는 랜덤한 값을 가지는 3x3 크기의 텐서를 생성합니다.
  • torch.randn_like(existing_tensor)는 기존 텐서와 동일한 크기와 데이터 타입을 가지는 평균 0, 표준편차 1의 정규분포를 따르는 랜덤한 값을 가지는 새로운 텐서를 생성합니다.
# 기본
import torch

tensor = torch.randn(5)
print(tensor)
# 출력: tensor([ 0.4914, -0.8914,  0.0112,  0.6667, -0.3456])  # 예시 값

# 다양한 크기와 데이터 타입
import torch

# 2차원 텐서
tensor_2d = torch.randn(2, 3)
print(tensor_2d)
# 출력: tensor([[ 0.6154,  0.6764,  0.5122],
#              [-0.1218,  0.8437, -0.4321]])  # 예시 값

# 데이터 타입 지정
tensor_float = torch.randn(2, 2, dtype=torch.float32)
print(tensor_float)
# 출력: tensor([[ 0.1234, -0.5678],
#              [ 0.9101, -0.1121]], dtype=torch.float32)  # 예시 값

# GPU에서 텐서 생성
tensor_gpu = torch.randn(3, 3, device=torch.device('cuda'))
print(tensor_gpu)
# 출력: tensor([[ 0.0012,  0.4321, -0.5643],
#              [ 0.8765, -0.6543,  0.3210],
#              [ 0.7890,  0.1234, -0.4567]], device='cuda:0')  # 예시 값

# 기존 텐서와 동일한 크기의 텐서 생성
existing_tensor = torch.tensor([[1, 2, 3], [4, 5, 6]])
tensor_like = torch.randn_like(existing_tensor)
print(tensor_like)
# 출력: tensor([[ 0.3456, -0.7890,  0.1234],
#              [ 0.5678, -0.9101,  0.4321]])  # 예시 값

 

라이센스

  PyTorch의 표준 라이브러리와 내장 함수들은 BSD-style license 하에 배포됩니다. 이 라이센스는 자유 소프트웨어 라이센스로, 상업적 사용을 포함한 거의 모든 용도로 사용이 가능합니다. 라이센스와 저작권 정보는 PyTorch의 공식 GitHub 리포지토리에서 확인할 수 있습니다.

 

관련 내용

  [PyTorch] 랜덤하게 0과 1 사이에서 놀아보자, torch.rand() 사용법

  [PyTorch] 랜덤 정수 생성의 비밀, torch.randint() 함수 활용법

  [PyTorch] 정규분포 랜덤 값의 마법, torch.randn() 함수 활용법

  

 

반응형