| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 대학생
- Batch
- GUI
- 컴공
- 파일 열기
- 객체인식
- perceptron
- matplotlib
- 라벨
- propagation
- 손실함수
- channel
- 머신러닝
- 데이터셋
- dl
- numpy
- PySide6
- 프레임워크
- MSE
- TXT
- 그래프
- pytorch
- 파이썬
- loss function
- 배치
- 딥러닝
- 파이썬프레임워크
- 컴퓨터비전
- Plot
- tensor
- Today
- Total
Welcome to Jiyuniverse
[pytorch] torch.rand() 함수, 텐서 크기 본문
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 성능과 데이터에 따라 다르기 때문에 실험을 통해 최적값을 찾는 것이 베스트.
'ML, DL' 카테고리의 다른 글
| [주절주절] 이미지 라벨링 후 데이터셋을 분리한 파일을 삭제해버렸다. (0) | 2025.02.11 |
|---|---|
| [pytorch] squeeze(), unsqueeze() 함수 (0) | 2025.02.07 |