A = torch.ones(2, 3, 4)
A
>>> tensor([[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]],
[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]]])
- Tensor의 차원을 반환
- dim()
- ndim
print(A.dim())
print(A.ndim)
>>> 3
3
- Tensor의 크기를 반환
- shape
- size()
print(A.shape)
print(A.shape[1])
print(A.size())
print(A.size(2))
>>> torch.Size([2, 3, 4])
3
torch.Size([2, 3, 4])
4
- Tensor 사이즈를 변경
- view()
- reshape()
# 원소의 개수는 유지한 채 사이즈를 바꾼다.
A.reshape(8,3)
>>> tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
A.view(3, -1)
>>> tensor([[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1.]])
A.view(-1, 4)
>>> tensor([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
- 크기가 1인 차원을 제거
- squeeze()
B = torch.FloatTensor([[0], [1], [2]])
print(B)
print(B.shape)
>>> tensor([[0.],
[1.],
[2.]])
torch.Size([3, 1])
print(B.squeeze())
print(B.squeeze().shape)
>>> tensor([0., 1., 2.])
torch.Size([3])
- 크기가 1인 차원을 추가
- unsqueeze()
C = torch.Tensor([0, 1, 2])
print(C.shape)
>>> torch.Size([3])
C.unsqueeze(0).shape # 0번쨰 차원에 추가
>>> torch.Size([1, 3])
print(B.view(1, -1)) # view(1, -1)로 같은 기능 구현
print(B.view(1, -1).shape)
>>>tensor([[0., 1., 2.]])
torch.Size([1, 3])
- 차원 바꾸기
- transpose(): 두 개의 차원은 맞교환
- permute(): 모든 차원을 맞교환
x = torch.rand(16, 32, 3)
y = x.tranpose(0, 2) # [3, 32, 16]
z = x.permute(2, 1, 0) # [3, 32, 16]
반응형
'DL > Pytorch' 카테고리의 다른 글
[Pytorch] Pytorch 모델링 구조 (1) | 2023.01.09 |
---|---|
[PyTorch] Tensorboard 사용하기 (colab) (0) | 2022.11.26 |
[PyTorch] Weight Initialization (기울기 초기화) (0) | 2022.11.25 |
[PyTorch] Transformer 코드로 이해하기 (0) | 2022.11.22 |
[PyTorch] Early Stopping & LRScheduler (0) | 2022.11.18 |