Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- MSE
- 객체인식
- 배치
- GUI
- 손실함수
- Batch
- 데이터셋
- Plot
- channel
- 파일 열기
- 그래프
- 컴공
- 파이썬프레임워크
- 프레임워크
- PySide6
- propagation
- tensor
- 컴퓨터비전
- 라벨
- 머신러닝
- TXT
- 대학생
- 파이썬
- loss function
- 딥러닝
- perceptron
- pytorch
- dl
- numpy
- matplotlib
Archives
- Today
- Total
Welcome to Jiyuniverse
[pytorch] squeeze(), unsqueeze() 함수 본문
squeeze()
크기가 1인 차원을 자동으로 제거하는 함수이다.
x = torch.rand(1, 1, 20, 128)
x = x.squeeze() # [1, 1, 20, 128] -> [20, 128]
x2 = x.squeeze(dim=1) # [1, 1, 20, 128] -> [1, 20, 128]
batch_size = 1 일 경우 위의 코드에서 x와 같이 제거될 수 있기 때문에 dimension을 지정해주어야 한다.
unsqueeze()
주어진 차원(dim)에 길이가 1인 차원을 추가해주는 함수이다. 차원을 하나 늘려서 텐서의 형태를 바꾼다고 생각하자.
import torch
x = torch.tensor([10, 20, 30])
print(x.shape) # torch.Size([3])
# dim=0에 차원 추가
y = x.unsqueeze(dim=0)
print(y.shape) # torch.Size([1, 3])
# dim=1에 차원 추가
z = x.unsqueeze(dim=1)
print(z.shape) # torch.Size([3, 1])
x의 원래 shape는 [3] (1차원 텐서).
x.unsqueeze(dim=0)을 하면 dim=0 방향으로 (길이가 1인) 차원이 추가되어 [1, 3]이 됨
x.unsqueeze(dim=1)을 하면, dim=1 방향에 차원이 추가되어 [3, 1]이 됨
unsqueeze()는 배치 차원을 추가하거나 브로드캐스팅 시에 주로 사용된다.
1. 배치 차원 추가
배치 차원이 없는 텐서에 배치 차원을 추가한다.
img = torch.rand(3, 256, 256) # (채널=3, 높이=256, 너비=256)
img.unsqueeze(0) # shape: [1, 3, 256, 256]
2. 브로드캐스팅
연산 시 차원이 맞지 않을 경우 차원을 맞춰준다.
a = torch.rand(5, 1)
b = torch.rand(5) # shape: [5]
b = b.unsqueeze(dim=1) # shape: [5, 1]
c = a + b # shape: [5, 1]
'ML, DL' 카테고리의 다른 글
[주절주절] 이미지 라벨링 후 데이터셋을 분리한 파일을 삭제해버렸다. (0) | 2025.02.11 |
---|---|
[pytorch] torch.rand() 함수, 텐서 크기 (0) | 2025.02.06 |