-
PyTorch์ Numpy์์์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ ํฌ๋งท ์ฐจ์ดAI\ML\DL/Pytorch 2023. 8. 1. 21:43๋ฐ์ํ
์ผ๋ฐ์ ์ผ๋ก ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ ๋๋น, ๋์ด, ์ฑ๋ ์์๋ก ํํ๋๋ RGB ํฌ๋งท์ ์ฌ์ฉํ๋ค.
์๋ฅผ ๋ค์ด, 32x32 ํฌ๊ธฐ์ ์ปฌ๋ฌ ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ (32,32,3) ์ผ๋ก ํํ๋๋ฉฐ, ๊ฐ ์ฐจ์์ ๊ฐ๊ฐ (ํ, ์ด, ์ฑ๋) ์ ๋ํ๋ธ๋ค.
์ด๋ฏธ์ง๋ฅผ (ํ,์ด,์ฑ) ํ์์ผ๋ก ์ฝ๊ณ ์ฒ๋ฆฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- Numpy
- OpenCV
- Matplotlib (์ด๋ฏธ์ง ์ฒ๋ฆฌ๋ ์๋์ง๋ง ๋ฐ์ดํฐ ์๊ฐํ ํ ๋)
์ด๋ฅผ ํ์ธํด๋ณด๊ธฐ ์ํด numpy ๋ก ๋๋คํ ์ ์๋ฅผ ์์ฑํ์ฌ 3์ฑ๋ (RGB) ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ์ฝ๋๋ฅผ ์์ฑํด ๋ณด์๋ค.
์์ฑํ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ shape์ ํ์ธํ๋ฉด (ํ,์ด,์ฑ๋) ์์๋ก ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
import numpy as np import matplotlib.pyplot as plt # ๊ฐ์์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ ์์ฑ (๋์ด: 4, ๋๋น: 4, ์ฑ๋: 3) a = 5 b = 4 c = 3 image_data = np.random.randint(0, 256, (a, b, c), dtype=np.uint8) print(image_data.shape) # Matplotlib๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ํ์ plt.imshow(image_data) plt.axis('off') # ์ถ ์ ๊ฑฐ plt.show()
(5,4,3)
์ฝ๋ ์ถ๋ ฅ ๋ฐ๋ฉด PyTorch์ ํ ์๋ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ (์ฑ๋, ํ, ์ด)๋ก ์ฝ๋๋ค.
Matplotlib์ imshow() ํจ์๋ ํ, ์ด, ์ฑ๋ ์์๋ก ์ด๋ฏธ์ง๋ฅผ ํ์ํ๋ฏ๋ก PyTorch ํ ์๋ฅผ ๊ทธ๋๋ก imshow() ํจ์์ ์ ๋ฌํ๋ฉด ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ์ธ์ํ์ง ๋ชปํด ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฌ๋ค.
"TypeError: Invalid shape (1, 3, 100, 150) for image data"
import torch import matplotlib.pyplot as plt x_batch = torch.rand(1, 3, 100, 150) plt.imshow(x_batch) plt.imshow(x_batch[0].permute(1, 2, 0)) plt.show()
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, 'permute(1,2,0)'๋ก ์ฐจ์์ ์กฐ์ ํด์ฃผ์ด PyTorch ํ ์๋ฅผ Matplotlib์ ์ ํฉํ ์์๋ก ๋ณ๊ฒฝํด์ค์ผ ํ๋ค.
import torch import matplotlib.pyplot as plt x_batch = torch.rand(1, 3, 4, 4) plt.imshow(x_batch[0].permute(1, 2, 0)) plt.show()
'AI\ML\DL > Pytorch' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
torch.cat vs torch.stack (0) 2023.09.29 CNN ๋ชจ๋ธ์ classifier๋จ์์ FC layer์ ์ ๋ ฅ ๋ ธ๋ ๊ฐ์ (0) 2023.08.03 torch.utils.data.DataLoader (0) 2023.07.25 nn.Linear (0) 2023.07.14