- Today
- Total
hye-log
[๋ถ์คํธ์บ ํ AI Tech]WEEK 02_DAY 06 ๋ณธ๋ฌธ
๐ ๊ฐ๋ณํ์ต
[1] Introduction to PyTorch
1. ๋ฅ๋ฌ๋์ ํ๋ ์์ํฌ
1) computation ๊ด์ ์์ PyTorch์ TensorFlow์ ์ฐจ์ด
- PyTorch : Define by Run
- TensorFlow : Define and Run
- ์ฐธ๊ณ ์๋ฃ : https://datasciencecareer.wordpress.com/2020/12/09/ml03-pytorch-vs-tensorflow/
2. Computational Graph
1) ์ฐ์ฐ ๊ณผ์ ์ ๊ทธ๋ํ๋ก ํํ
2) Define and Run : ๊ทธ๋ํ๋ฅผ ๋จผ์ ์ ์ํ๊ณ ์คํ ์์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ด
3) Define by Run(Dynamic Computational Graph) : ์คํ์ ํ๋ฉด์ ๊ทธ๋ํ๋ฅผ ์์ฑํจ -> Pythonic Code
3. PyTorch
1) Numpy ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ Tensor ๊ฐ์ฒด๋ก array ํํ
2) ์๋๋ฏธ๋ถ์ ์ง์ํ์ฌ DL ์ฐ์ฐ ์ง์
3) ๋ค์ํ ํํ์ DL์ ์ง์ํ๋ ํจ์, ๋ชจ๋ธ์ ์ง์
[2] PyTorch Baiscs
1. Tensor
1) ๋ค์ฐจ์ Arrays๋ฅผ ํํํ๋ PyTorch ํด๋์ค
2) numpy์ ndarray์ ๋์ผ(TensorFlow์ Tensor์ ๋์ผ)
2. view() vs. reshape()
1) tensor์ ๋ชจ์์ ๋ฐ๊พธ๋ ํจ์
2) view() : ์๋ณธ ๋ฐ์ดํฐ์ ์ฐ๊ฒฐ๋์ด ๊ธฐ์กด ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด view ํจ์๋ก ์์ฑ๋ ๋ฐ์ดํฐ๋ ๋ณ๊ฒฝ๋จ
# tensor -> view : ์๋ณธ ๋ฐ์ดํฐ์ ์ฐ๊ฒฐ
a = torch.zeros(3, 2) # tensor([[0., 0.], [0., 0.], [0., 0.]])
b = a.view(2, 3) # tensor([[0., 0., 0.], [0., 0., 0.]])
a.fill_(1) # tensor([[1., 1.], [1., 1.], [1., 1.]])
b # tensor([[1., 1., 1.], [1., 1., 1.]])
3) reshape() : ์๋ณธ ๋ฐ์ดํฐ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด ๊ธฐ์กด ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ reshape ํจ์๋ก ์์ฑ๋ ๋ฐ์ดํฐ๋ ๋ณ๊ฒฝ๋์ง ์์
# tensor -> reshape : ๋ณต์ฌ๋ณธ์ ๋ฐ์
a = torch.zeros(3, 2) # tensor([[0., 0.], [0., 0.], [0., 0.]])
b = a.t().reshape(6) # tensor([0., 0., 0., 0., 0., 0.])
a.fill_(1) # tensor([[1., 1.], [1., 1.], [1., 1.]])
b # tensor([0., 0., 0., 0., 0., 0.])
3. torch.squeeze() vs. torch.unsqueeze()
1) squeeze() : ์ฐจ์์ ๊ฐ์๊ฐ 1์ธ ์ฐจ์์ ์ญ์
# squeeze
tensor_ex = torch.rand(size=(2, 1, 2))
print(tensor_ex.squeeze())
print(tensor_ex.squeeze().shape) # torch.Size([2, 2])
2) unsqueeze() : ์ฐจ์์ ๊ฐ์๊ฐ 1์ธ ์ฐจ์์ ์ถ๊ฐ
# unsqueeze
tensor_ex = torch.rand(size=(2, 2))
print(tensor_ex.unsqueeze(0))
print(tensor_ex.unsqueeze(0).shape) # torch.Size([1, 2, 2])
4. torch.mm() vs. torch.matmul()
1) ํ๋ ฌ๊ณฑ์ ์ํํ๋ ํจ์
2) torch.mm() : 2์ฐจ์ ํ๋ ฌ๊ณฑ์ ๊ณ์ฐ. ์ฐจ์์ด ๋ง์์ผ ํจ.
# Plus Case - 2์ฐจ์ ํ๋ ฌ๊ณผ 2์ฐจ์ ํ๋ ฌ์ ๊ณฑ์ mm์ผ๋ก ๊ณ์ฐ ๊ฐ๋ฅ
a = torch.rand(2, 3) # torch.Size([2, 3])
b = torch.rand(3, 1) # torch.Size([3, 1])
a.mm(b) # torch.Size([2, 1])
+ torch.bmm() : 3์ฐจ์ ํ๋ ฌ๊ณฑ์ ๊ณ์ฐ. ์ฐจ์์ด ๋ง์์ผ ํจ.
# Plus Case - 3์ฐจ์ ํ๋ ฌ๊ณผ 3์ฐจ์ ํ๋ ฌ์ ๊ณฑ์ bmm์ผ๋ก ๊ณ์ฐ ๊ฐ๋ฅ
a = torch.rand(5, 2, 3)
b = torch.rand(5, 3, 2)
a.bmm(b)
3) torch.matmul() : broadcast(์ฐจ์์ด ๋ง์ง ์์ ๊ฐ์ฒด๋ผ๋ฆฌ ์ฐ์ฐ๋๋๋ก ํ๋ ๊ฒ) ์ง์
# Sucess Case - 3์ฐจ์ ํ๋ ฌ๊ณผ 1์ฐจ์ ๋ฒกํฐ์ ๊ณฑ์ matmul๋ก ๊ณ์ฐ ๊ฐ๋ฅ(broadcasting)
a = torch.rand(5, 2, 3) # torch.Size([5, 2, 3])
b = torch.rand(3) # torch.Size([3])
a.matmul(b) # torch.Size([5, 2])
[3] PyTorch ํ๋ก์ ํธ ๊ตฌ์กฐ ์ดํดํ๊ธฐ
1. PyTorch Project Template
1) ์คํ, ๋ฐ์ดํฐ, ๋ชจ๋ธ, ์ค์ , ๋ก๊น , ์งํ, ์ ํธ๋ฆฌํฐ ๋ฑ ๋ค์ํ ๋ชจ๋๋ค์ ๋ถ๋ฆฌํ์ฌ ํ๋ก์ ํธ ํ ํ๋ฆฟํ
2) ์ถ์ฒํ๋ repository
- https://github.com/FrancescoSaverioZuppichini/PyTorch-Deep-Learning-Template
- https://github.com/PyTorchLightning/deep-learning-project-template
- https://github.com/victoresque/pytorch-template
pytorch-template/
โ
โโโ train.py - main script to start training
โโโ test.py - evaluation of trained model
โ
โโโ config.json - holds configuration for training
โโโ parse_config.py - class to handle config file and cli options
โ
โโโ new_project.py - initialize new project with template files
โ
โโโ base/ - abstract base classes
โ โโโ base_data_loader.py
โ โโโ base_model.py
โ โโโ base_trainer.py
โ
โโโ data_loader/ - anything about data loading goes here
โ โโโ data_loaders.py
โ
โโโ data/ - default directory for storing input data
โ
โโโ model/ - models, losses, and metrics
โ โโโ model.py
โ โโโ metric.py
โ โโโ loss.py
โ
โโโ saved/
โ โโโ models/ - trained models are saved here
โ โโโ log/ - default logdir for tensorboard and logging output
โ
โโโ trainer/ - trainers
โ โโโ trainer.py
โ
โโโ logger/ - module for tensorboard visualization and logging
โ โโโ visualization.py
โ โโโ logger.py
โ โโโ logger_config.json
โ
โโโ utils/ - small utility functions
โโโ util.py
โโโ ...
๐ ์ค๋์ ํ๊ณ
์๋ก์ด ํ ์ฃผ, WEEK 02๊ฐ ์์๋์๋ค๐ ์ด๋ฒ ์ฃผ์ ์ฃผ์ ๋ PyTorch์ธ๋ฐ, ์๊ฐํด๋ณด๋ฉด ์ธ๊ณต์ง๋ฅ์ 2๋
(?) ์ ๋ ๋ค๋ค์ง๋ง ์ง๊ธ๊น์ง ํ์ดํ ์น์ ๋ํ ๊ฐ์๋ ๋ค์ด๋ณธ ์ ์ด ์๋๊ฑฐ ๊ฐ๋ค..(๊ทธ๋์ ์ด๋ป๊ฒ ๊ฐ๋ฐํ๊ณ ์ฝ๋ ์ง ๊ฑธ๊น... ํญ์ ๊ตฌ๊ธ์ ๊ณผ ํจ๊ป) ๊ทธ๋์ ์ง๋์ฃผ์ ๊ฐ๋ณ๊ฒ ์ดํด ๋ณธ ํ์ด์ฌ๊ณผ ํต๊ณ์๋ ๋ฌ๋ฆฌ, ํ์ดํ ์น๋ ์ ๋งค๋ชจํธํ ๊ฐ๋
๋ค์ ๋ค์ ์ ๋ฆฌํ๊ณ , ๋๊ตฐ๊ฐ ๋ฌผ์ด๋ดค์ ๋ ์๋ฒฝํ๊ฒ ๋๋ตํ ์ ์๋๋ก ๊ณต๋ถํ๋ ๊ฒ์ด ์ด๋ฒ ์ฃผ์ ๋ชฉํ์ด๋ค! ํนํ๋ view-reshape, squeeze-unsqueeze, mm-matmul์ ๊ฒฝ์ฐ ํญ์ ํท๊ฐ๋ฆฌ๋ ๊ฐ๋
์ด์๋๋ฐ ์ด๋ฒ์ ํ์คํ๊ฒ ๊ฐ๋
์ ์ก๊ณ ๊ฐ๋ ๊ฑฐ ๊ฐ์์ ์ข๋ค. ์ด๋ ๊ฒ ๋ถ์บ ํตํด์ ์ธ๊ณต์ง๋ฅ ๊ฐ๋
์ ํ๋์ฉ ์์๊ฐ๋ ๊ณผ์ ์ด ์ฆ๊ฒ๋ค. ํผ์ด์ธ์
๋๋ ์ง๋์ฃผ์๋ ๋ค๋ฅด๊ฒ ๊ฐ์ ๋ณด๊ณ ํท๊ฐ๋ฆฌ๋ ๊ฒ๋ค์ ์๋ก ๋ฌผ์ด๋ณด๊ณ ๋๋ตํ๋ ์๊ฐ์ ๊ฐ์ก๋ค. ํ์ด์ฌ๋ง ๋ฐฐ์ฐ๋ ์ง๋์ฃผ๋ณด๋ค ๋ด์ฉ์ด ๋ง์์ ธ์ ์๋ก ํ ์ด์ผ๊ธฐ๋ค์ด ๋ง์๋ฏ..! ๊ธฐ๋ณธ ๊ณผ์ ๋ง ๋ง์น๊ณ ์ค๋ ํ๋ฃจ๋ฅผ ๋ง๋ฌด์ผ๋ฆฌ!!๐
'Boostcourse > AI Tech 4๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ถ์คํธ์บ ํ AI Tech]WEEK 02_DAY 08 (0) | 2022.09.29 |
---|---|
[๋ถ์คํธ์บ ํ AI Tech]WEEK 02_DAY 07 (0) | 2022.09.27 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 01_DAY 05 (1) | 2022.09.23 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 01_DAY 04 (1) | 2022.09.22 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 01_DAY 03 (1) | 2022.09.21 |