텐서(tensor)는 행렬이라고 생각해도 무방할 것 같습니다. 파이토치로 텐서를 생성할 때 정수를 행렬의 요소로 담으려면 torch.IntTensor를, 실수를 행렬의 요소로 담으려면 torch.FloatTensor 또는 torch.DoubleTensor를 사용할 수 있습니다[1].
오늘은 1차원 텐서, 2차원 텐서, 3차원 텐서를 차례로 생성해보도록 하겠습니다.
1차원 텐서
먼저 저는 정수를 요소로 하는 1차원 텐서를 생성하겠습니다.
텐서의 차원은 x.dim()으로 확인이 가능하고, 크기는 x.shape로 확인할 수 있습니다. 다음과 같이 말이죠.
1차원 텐서이므로 차원으로는 1이 나왔고, 요소가 5개인 1차원 텐서이므로 크기로 5가 출력이 되었습니다.
2차원 텐서
이번에는 실수를 요소로 하는 2차원 텐서를 만들어보겠습니다.
보시다시피 차원이 2이고, 크기는 2 x 3인 텐서가 생성되었습니다.
3차원 텐서
이번에는 3차원 텐서를 생성해보겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
z = torch.IntTensor(
[
[[0, 0, 0, 0, 0],
[50, 50, 50, 50, 50],
[100, 100, 100, 100, 100],
[150, 150, 150, 150, 150],
[0, 0, 0, 0, 0]],
[[10, 10, 10, 10, 10],
[60, 60, 60, 60, 60],
[110, 110, 110, 110, 110],
[160, 160, 160, 160, 160],
[0, 0, 0, 0, 0]],
[[20, 20, 20, 20, 20],
[70, 70, 70, 70, 70],
[120, 120, 120, 120, 120],
[170, 170, 170, 170, 170],
[250, 250, 250, 250, 250]],
]
)
print(z)
|
cs |
조금 복잡해보이죠. 그렇게 보일 뿐입니다. 마찬가지로 이 텐서의 차원과 크기를 확인해보겠습니다.
1
2
|
print(z.dim())
print(z.shape)
|
cs |
3차원, 3 x 5 x 5 크기의 텐서라는 것을 알 수 있습니다.
3차원 텐서, 즉 3차원 행렬은 왠지 RGB 컬러 이미지를 표현해낼 수 있을 것 같지 않나요? 그래서 생성한 3차원 텐서를 한번 display해보도록 하겠습니다. plt.imshow()로 display가 가능하게 하려면 permute 메서드를 이용해서 크기를 5 x 5 x 3으로 바꿔줘야 합니다. 그러면 display가 가능합니다.
1
2
3
4
5
6
7
|
z1 = z.permute(1, 2, 0)
print(z1.dim())
print(z1.shape)
import matplotlib.pyplot as plt
plt.imshow(z1)
|
cs |
예상대로 3차원 텐서는 컬러 이미지의 형태로 보여질 수 있습니다.
<참고자료>
[1] https://pytorch.org/docs/stable/tensors.html, PyTorch, "TORCH.TENSOR"
[2] https://wikidocs.net/52460, PyTorch로 시작하는 딥 러닝 입문, "02. 텐서 조작하기(Tensor Manipulation) 1"
[3] https://stackoverflow.com/questions/53623472/how-do-i-display-a-single-image-in-pytorch/53633017, stackoverflow, "How do I display a single image in PyTorch?"
'Dev > python' 카테고리의 다른 글
[PyTorch] 파이토치에서 자료형 변환하기(casting) (1) | 2020.08.21 |
---|---|
[PyTorch] 넘파이 행렬을 파이토치 텐서로 바꾸려면 (0) | 2020.08.21 |
[PyTorch] 파이토치 텐서의 최대값 및 그것의 인덱스 (0) | 2020.08.20 |
[PyTorch] 파이토치에서 행렬 곱셈과 element-wise 곱셈 (0) | 2020.08.20 |
[python] ImportError: cannot import name 'PILLOW_VERSION' from 'PIL' 해결 방법 (0) | 2020.08.12 |
[Anaconda+python] CUDA 10.0에 맞게 pytorch와 torchvision 설치하기 (0) | 2020.08.12 |
[python] 현재 PC에 설치되어 있는 CUDA 버전 확인하기 (0) | 2020.08.12 |
[python] DISTS 파이썬 코드 실행하기(IQA_pytorch 패키지) (4) | 2020.08.10 |