AI/PyTorch

PyTorch 자주 쓰이는 함수

dragonhyeon 2025. 2. 3. 16:55
728x90
반응형

torch.randn:

  • 주어진 크기의 텐서를 생성하고, 그 안에 평균 0, 표준편차 1 인 정규분포에서 랜덤 샘플링된 값을 채우는 함수
  • ex.
    • torch.randn(3)
      • size: (3)
    • torch.randn(3, 4, 5)
      • size: (3, 4, 5)

torch.rand:

  • 주어진 크기의 텐서를 생성하고, 그 안에 0 이상 1 미만의 균등분포에서 랜덤 샘플링된 값을 채우는 함수
  • ex.
    • torch.rand(3)
      • size: (3)
    • torch.rand(3, 4, 5)
      • size: (3, 4, 5)

torch.randint:

  • 주어진 크기의 텐서를 생성하고, 그 안에 low 이상 high 미만의 정수값을 랜덤하게 채우는 함수
    • 텐서의 크기는 튜플 형태로 제공
  • ex.
    • torch.randint(low=0, high=10, size=(3, 4))
      • size: (3, 4)
    • torch.randint(-3, 5, (3, 2, 4))
      • size: (3, 2, 4)

torch.zeros:

  • 주어진 크기의 텐서를 생성하고, 그 안에 모든 값을 0 으로 채우는 함수
  • ex.
    • torch.zeros(3)
      • size: (3)
    • torch.zeros(3, 4, 5)
      • size: (3, 4, 5)

torch.zeros_like:

  • 주어진 텐서와 동일한 크기를 가진 텐서를 생성하고, 그 안에 모든 값을 0 으로 채우는 함수
  • ex.
tensor = torch.randn(1, 2, 3)
result = torch.zeros_like(input=tensor)
# size: (1, 2, 3)

 

torch.ones:

  • 주어진 크기의 텐서를 생성하고, 그 안에 모든 값을 1 로 채우는 함수
  • ex.
    • torch.ones(3)
      • size: (3)
    • torch.ones(3, 4, 5)
      • size: (3, 4, 5)

torch.ones_like:

  • 주어진 텐서와 동일한 크기를 가진 텐서를 생성하고, 그 안에 모든 값을 1 로 채우는 함수
  • ex.
tensor = torch.randn(1, 2, 3)
result = torch.ones_like(tensor)
# size: (1, 2, 3)

 

torch.Tensor.unsqueeze:

  • 주어진 텐서에 새로운 차원을 추가하는 함수로 추가된 차원의 크기는 1 로 설정
  • 새로운 차원을 추가할 위치를 지정하는 인덱스를 인자로 제공
    • 인자 제공 안할 시 에러 발생
  • ex.
tensor = torch.tensor([1, 2, 3])
result = tensor.unsqueeze(dim=0)
# size: (1, 3)
tensor = torch.tensor([1, 2, 3])
result = tensor.unsqueeze(dim=-1)
# size: (3, 1)
tensor = torch.randn(2, 2, 3)
result = tensor.unsqueeze(dim=2)
# size: (2, 2, 1, 3)

 

torch.Tensor.squeeze:

  • 주어진 텐서에서 크기가 1 인 차원을 제거하는 함수
  • dim 매개변수를 지정하면 특정 차원만 제거할 수 있으며, 지정하지 않으면 크기가 1 인 모든 차원 제거
    • 지정된 차원의 크기가 1 이 아니면 아무런 변화가 일어나지 않음
    • 튜플 형태로도 인자 제공 가능
  • ex.
tensor = torch.randn(1, 3, 1)
result = tensor.squeeze()
# size: (3)
tensor = torch.randn(1, 3, 1)
result = tensor.squeeze(1)
# size: (1, 3, 1)
tensor = torch.randn(1, 3, 1)
result = tensor.squeeze(-1)
# size: (1, 3)
tensor = torch.randn(2, 1, 3, 1, 1, 4)
result = tensor.squeeze((1, 3, 5))
# size: (2, 3, 1, 4)

 

torch.Tensor.expand:

  • 주어진 텐서의 기존 차원의 크기가 1 인 경우, 해당 차원을 원하는 크기로 확장하는 함수
    • 해당 차원의 크기가 1 인 아닌 경우 동일한 크기를 제공하거나 -1 을 제공하여 해당 차원에 대해서는 건너뛰어야 함
  • 차원 별로 확장할 만큼의 크기를 제공
    • n 차원 텐서라면 무조건 n 개의 값을 인자로 주어야 함
  • 반환된 텐서는 메모리를 새로 할당하지 않고, 원본 데이터를 공유함
  • ex.
tensor = torch.randn(3, 1, 5, 1, 7)
result = tensor.expand(-1, 4, -1, 9, 7)
# size: (3, 4, 5, 9, 7)

 

torch.Tensor.repeat:

  • 주어진 텐서를 차원별로 지정한 값 만큼 복사해주는 함수
  • 차원 별로 확장할 만큼의 크기를 인자로 제공
    • 차원 별로 정수형 값을 인자로 제공
    • n 차원 텐서라면 n 개 이상의 값을 인자로 주어야 함
    • n 보다 많은 인자를 주었다면 뒤의 인자부터 원본 텐서의 차원과 대응되어 복사
    • 리스트 혹은 튜플 형태로도 제공 가능
  • ex.
tensor = torch.randn(4, 2)
result = tensor.repeat(2, 5)
# size: (8, 10)
tensor = torch.randn(3, 1, 5)
result = tensor.repeat((2, 5, 1))
# size: (6, 5, 5)
tensor = torch.randn(4, 2)
result = tensor.repeat([2, 5, 8, 2])
# size: (2, 5, 32, 4)

 

torch.cat:

  • 주어진 텐서들의 리스트 또는 튜플을 주어진 차원에서 합치는 함수
  • 텐서들의 차원의 개수가 같아야 함
  • 연결할 차원을 제외한 나머지 차원에서의 크기가 같아야 함
  • default dim 값은 0
  • ex.
tensor1 = torch.randn(4, 2, 5)
tensor2 = torch.randn(4, 7, 5)
result = torch.cat([tensor1, tensor2], dim=1)
# size: (4, 9, 5)

 

torch.stack:

  • 주어진 텐서들의 리스트 또는 튜플에 대해 새로운 차원을 추가한 후, 해당 차원에서 텐서를 쌓는 함수
  • 기존 텐서보다 차원이 1 개 증가함
  • 모든 차원의 크기가 같아야 함
  • default dim 값은 0
  • ex.
tensor1 = torch.randn(4, 3, 5)
tensor2 = torch.randn(4, 3, 5)
result = torch.stack([tensor1, tensor2], dim=3)
# size: (4, 3, 5, 2)

 

torch.Tensor.flatten:

  • 주어진 텐서를 주어진 차원들에 대해서 1 차원으로 평탄화 (펼치기) 하는 함수
  • default start_dim 값은 0, end_dim 값은 -1
  • ex.
tensor = torch.randn(2, 3, 4, 5, 6, 7)
result = torch.flatten(tensor, start_dim=2, end_dim=4)
# size: (2, 3, 120, 7)
728x90
반응형