Welcome to Jiyuniverse

[pytorch] torch.rand() 함수, 텐서 크기 본문

ML, DL

[pytorch] torch.rand() 함수, 텐서 크기

JJiiyun 2025. 2. 6. 18:51

 

torch.rand(), torch.randint()

 

PyTorch에서 0과 1 사이의 랜덤한 숫자로 이루어진 텐서를 생성하는 함수

 

import torch

x = torch.rand(3, 4)
print(x)

#출력
tensor([[0.7451, 0.2853, 0.5768, 0.9132],
        [0.1235, 0.6674, 0.8315, 0.4291],
        [0.3927, 0.8241, 0.1483, 0.9138]])

 

torch.rand(행, 열) -> (3x4) 크기의 랜덤 텐서를 생성한 코드이다. 모든 값이 0 이상 1 미만인 실수형(float32)이다.

 

torch.randint(low, high, size)를 사용하면 low 이상 high 미만의 정수형 랜덤 텐서를 생성한다.

 

torch.rand(배치 크기, 행, 열) 형태로도 만들 수 있다.

 

batch 란?

 

한 번에 학습하는 데이터 묶음.

 

데이터를 한 장씩 학습하면 학습 시간이 너무 오래 걸리고, 성능이 안 좋을 수 있다.

-> 데이터를 여러 장씩 묶어서 학습시킨다! 병렬 연산이 가능해서 빠르고 안정적으로 학습이 가능하다.

 

딥러닝에서는 데이터를 보통 Batch(배치) 단위로 묶어서 학습한다.

 

batch_size = 32 -> 한 번에 32개의 데이터를 모델에 넣어서 학습시킴

x = torch.rand(4, 1, 28, 28) # [배치 크기, 채널, 높이, 너비]

 

  • Batch: 한 번에 처리하는 이미지(또는 데이터) 묶음의 개수
  • Channel: 이미지의 색상 채널(RGB라면 3개, 흑백이라면 1개 등)
  • Height: 이미지 세로 길이(픽셀)
  • Width: 이미지 가로 길이(픽셀)

 

 

 

Batch size가 크면 속도가 빨라질까?

 

한 번에 많은 데이터를 병렬 연산(GPU 활용) 으로 처리할 수 있기 때문에 속도가 빨라질 가능성이 크다.

하지만 배치 크기를 너무 크게 설정하면 문제가 생길 수 있다.

 

1. 메모리 부족 (Out of Memory, OOM)

- 메모리가 부족하면 프로그램이 중단될 수 있음

 

2. 일반화 성능 저하

- 배치 크기가 너무 커지면 모델이 전체 데이터를 한꺼번에 보게 되기 때문에, 모델이 훈련 데이터에 Overfitting 될 위험이 크다.

 

작은 배치를 설정하게 되면 모델이 더 다양한 데이터 조합으로 훈련하게 되기 때문에 일반화에 유리할 수 있다.

 

작은 배치는 16~32, 큰 배치는 64~512로 보통은 64를 사용하는 것 같다.

GPU 성능과 데이터에 따라 다르기 때문에 실험을 통해 최적값을 찾는 것이 베스트.