3์ฃผ์ฐจ ๊ธ์์ผ
- Pytorch ์ฐ์ต
์ผ๋ผ์ค๋ ์กฐ๊ธ ์จ ๋ดค๋๋ฐ ํ์ดํ ์น๋ ์ต์ํ์ง ์์์ ๊ฐ์ ์ฝ๋๋ฅผ ๋ฐ๋ก๋ฐ๋ก ๋ฐ๋ผ๊ฐ๊ธฐ๊ฐ ์ฝ์ง ์์๋ค. ๊ทธ๋์ ํ์ดํ ์น ํํ ๋ฆฌ์ผ์ ๋ณด๊ณ ์กฐ๊ธ์ฉ ์ฐ์ตํ๋ ค๊ณ ํ๋ค.
*ํ์ดํ ์น๋ ๋๋ถ๋ถ์ ๊ตฌ์กฐ๊ฐ ํด๋์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค!
torch
๋ฉ์ธ ๋ค์์คํ์ด์ค๋ก ํ
์ ๋ฑ์ ๋ค์ํ ์ํ ํจ์๊ฐ ๋ค์ด์์ผ๋ฉฐ Numpy์ ๋น์ทํ ๊ตฌ์กฐ๋ค.
torch.autograd
์๋ ๋ฏธ๋ถ์ ์ํ ํจ์๋ค์ด ๋ค์ด์์ผ๋ฉฐ ์์ฒด ๋ฏธ๋ถ ๊ฐ๋ฅ ํจ์๋ฅผ ์ ์ํ ๋ ์ฌ์ฉํ๋ ๊ธฐ๋ฐ ํด๋์ค์ธ 'Function' ๋ฑ์ด ์ด ์์ ์๋ค.
torch.nn
์ ๊ฒฝ๋ง ๊ตฌ์ถ์ ์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ๋ ์ด์ด ๋ฑ์ด ์ ์๋์ด ์๋ค. CNN, RNN, LSTM ๋ฑ์ ๋ชจ๋ธ ๊ตฌ์กฐ๋ ReLU์ ๊ฐ์ ํ์ฑํ ํจ์, MSELoss์ ๊ฐ์ ์์ค ํจ์๊ฐ ๋ค ์ฌ๊ธฐ์ ์๋ค.
torch.optim
ํ๋ฅ ์ ๊ฒฝ์ฌ ํ๊ฐ๋ฒ(Stochastic Gradient Descent, SGD)๋ฅผ ์ค์ฌ์ผ๋ก ํ ํ๋ผ๋ฏธํฐ ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ์ ์ฐ๋ ค๋ฉด ์ด ์๋ธ๋ชจ๋์ด ํ์ํ๋ค.
torch.utils.data
SGD์ ๋ฐ๋ณต ์ฐ์ฐ์ ์คํํ ๋ ์ฌ์ฉํ๋ ๋ฏธ๋ ๋ฐฐ์น์ฉ ์ ํธ๋ฆฌํฐ ํจ์๊ฐ ์๋ค.
dim()์ ์ฌ์ฉํ๋ฉด ํ์ฌ ํ ์์ ์ฐจ์์, shape๋ size()๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์์ ํฌ๊ธฐ๋ฅผ ํ์ธํ ์ ์๋ค.
t = torch.FloatTensor([0., 1., 2., 3., 4., 5., 6.])
print(t.dim()) # rank. ์ฆ, ์ฐจ์
print(t.shape) # shape
print(t.size()) # shape
>>> 1
torch.Size([7])
torch.Size([7])
๋ค์ ์ฃผ๊ฐ ์ค์ด๋ผ ํ ์ฃผ ํต์งธ๋ก ํด๊ฐ์ธ๋ฐ, ์ด ๋๋ฅผ ์ด์ฉํด์ ๋ถ์กฑํ ๋ถ๋ถ์ ์ข ๋ณด์ถฉํ๊ธฐ๋ก ํ๋ค. ํ๋ ๊น์ ์ฐ๋ฆฌ๋ผ๋ฆฌ ํ๋ก์ ํธ๋ฅผ ํ๋ ํด ๋ณด๋ฉด ์ด๋จ๊น ํ๋ ์ด์ผ๊ธฐ๊ฐ ๋์์ ๋ค๋ค ์ฐํด๋ฅผ ์ด์ฉํด ๋ชจ๋ธ์ ํ๋ ๋ง๋ค์ด ๋ณด๊ธฐ๋ก ํ๋ค. kaggle์์ ์งํ ์ค์ธ ์ฑ๋ฆฐ์ง ์ค์ ๊ฐํ ๊ธ์ ์ธ์ํ๋ ๊ฒ์ ๊ณจ๋ผ ์ํ๋ ๋ฐฉ์์ผ๋ก ๋ชจ๋ธ์ ๋ง๋ค์ด ์ ๋ก๋ํ๊ธฐ๋ก ํ๋ค.