๋”ฅ๋Ÿฌ๋‹ 55

numpy argsort ์˜ ์˜๋ฏธ์™€ ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌ

์ฝ”๋“œ๋ฅผ ๋ฆฌ๋ทฐํ•˜๋‹ค๊ฐ€ np.argsort ๋ฅผ ๋ณด๊ณ  ์ •๋ ฌ์€ ์ •๋ ฌ์ธ๋ฐ ์–ด๋–ค์‹์œผ๋กœ ์ •๋ ฌ๋˜๋Š” ๊ฑด์ง€ ๊ถ๊ธˆํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค. ๊ฐ ์›์†Œ์˜ ์ •๋ ฌ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. numpy.argsort(a, axis=-1, kind=None, order=None) b = [0,1,2,3,10,9,8] x=np.argsort(b) print(x) ๊ฒฐ๊ณผ๊ฐ’ [0 1 2 3 6 5 4] x2 = np.argsort(b)[::-1]. #๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ ๊ฒฐ๊ณผ๊ฐ’ [4 5 6 3 2 1 0] a = [[0,1,2,3],[1,2,3]] print(np.argsort([len(aa) for aa in a])) [1 0] x = np.array([[0, 3], [2, 2]]) np.argsort(x, axis=0) array([[0, 1], [1,..

pytorch DataLoader ํŒŒ์ดํ† ์น˜ ๋ฐ์ดํ„ฐ๋กœ๋” ์‚ฌ์šฉ๋ฒ•

ํŒŒ์ดํ† ์น˜๋กœ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ๋งŒ๋“œ๋ ค๋ฉด ๋ฐ์ดํ„ฐ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์ •์˜ ํ•˜๋Š” ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค , ์ด์ „์— https://getacherryontop.tistory.com/144 ์—์„œ ๋ฒ„ํŠธ๋กœ ์˜ํ™”๋ฆฌ๋ทฐ ๊ฐ์ •๋ถ„์„์„ ํ•˜๋ฉฐ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์–ธ๊ธ‰ํ–ˆ์—ˆ๋‹ค. 1. transformers ์˜ Trainer๋ฅผ ํ™œ์šฉํ•œ๋‹ค. 2. pytorch๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 2๋ฒˆ์˜ ๊ฒฝ์šฐ์— ์šฐ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋กœ๋”๋ฅผ ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค. ์œ„ ๊ธ€์—์„œ ๋ฐ์ดํ„ฐ๋กœ๋”๋งŒ ๋ณด๋ฉด from torch.utils.data import DataLoader train_dataloader = DataLoader(small_train_dataset, shuffle=True, batch_size=8) eval_dataloader = DataLoader(small_eval_datas..

end-to-end ๋ชจ๋ธ์ด๋ž€

๋”ฅ๋Ÿฌ๋‹ ์ฑ…์„ ์ฝ๋‹ค๋ณด๋ฉด, ์—”๋“œํˆฌ์—”๋“œ ๋ชจ๋ธ์ด๋ผ๋Š” ์šฉ์–ด๊ฐ€ ๋งŽ์ด ๋‚˜์˜จ๋‹ค. end-to-end ๋ชจ๋ธ ๋Œ€๋ถ€๋ถ„์˜ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์€ x๋ฅผ ๋„ฃ์œผ๋ฉด y๊ฐ€ ๋‚˜์˜ค๋„๋ก ํ•œ๋‹ค. (์˜ˆ๋ฅผ ๋“ค๋ฉด, ๊ฐœ์‚ฌ์ง„ ์ž…๋ ฅ-> ๊ฐœ๋ฅผ๋ฑ‰๋Š” ์ด๋ฏธ์ง€ ๋ถ„๋ฅ˜ ํ…Œ์Šคํฌ) ๊ทธ ๊ณผ์ •์€ ์ด๋ฏธ์ง€์—์„œ ํŠน์ง•์„ ์ถ”์ถœํ•˜๊ณ , ํŠน์ง•์— ๋งž๋Š” ๋‹จ์–ด์™€ ๋งค์นญ์‹œํ‚ค๊ณ  ์ด๋Ÿฌํ•œ ์ž‘์—…๋“ค์„ ๊ฑฐ์น˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค.end-to-end ๋ชจ๋ธ์€ ์ด๋Ÿฌํ•œ ์ค‘๊ฐ„ ๊ณผ์ •๋“ค์„ ํ•˜๋‚˜์˜ ์‹ ๊ฒฝ๋ง(ํ•˜๋‚˜์˜ ํŒŒ์ดํ”„๋ผ์ธ)์œผ๋กœ ๋Œ€์ฒด/์••์ถ•ํ•˜๋Š” ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๋‹ค๋งŒ ์ด๋Š” ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์–ด์•ผ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. ์Œ์„ฑ์ธ์‹์— end-to-end ๋ฅผ ์ ์šฉํ•œ ์˜ˆ ์‚ฌ์‹ค ์ข€ ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์ด๊ธฐ๋Š” ํ•œ๋ฐ์š” “ํŠน์ •ํ•œ task๋ฅผ ํ•˜๋‚˜์˜ ๋ชจ๋ธ์— ๋Œ€ํ•œ ์ถ”๋ก  ๊ฒฐ๊ณผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค” ์ด์ •๋„์˜ ์˜๋ฏธ์ธ๋ฐ ์—ฌ๊ธฐ์„œ “ํŠน์ •ํ•œ task” ๋Š” language m..

ํŒŒ์ดํ† ์น˜๋กœ ๊ฐ„๋‹จํ•œ ์ธ๊ณต์‹ ๊ฒฝ๋ง ๊ตฌํ˜„ํ•˜๊ธฐ (๋ถ„๋ฅ˜)

ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž„ํฌํŠธ import torch import numpy as np from sklearn.datasets import make_blobs import matplotlib.pyplot as plt import torch.nn.functional as F ๋ฐ์ดํ„ฐ์…‹ ์ƒ์„ฑ n_dim=2 x_train, y_train = make_blobs(n_samples=50, n_features=n_dim, centers=[[1,1],[-1,-1],[1,-1],[-1,1]], shuffle=True, cluster_std=0.3) x_test, y_test = make_blobs(n_samples=20, n_features=n_dim, centers=[[1,1],[-1,-1],[1,-1],[-1,1]], s..

RNN

์ž์—ฐ์–ด์ฒ˜๋ฆฌ์—์„œ ํ† ํฐ์˜ ์ˆœ์„œ๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ง‘์— ๊ฐ„๋‹ค. (o) ๋‚˜๋Š” ๊ฐ„๋‹ค ์ง‘์— (x) ์ด๋Ÿฌํ•œ ํ† ํฐ์˜ ์ˆœ์„œ๋ฅผ ๊ณ ๋ คํ•˜๊ธฐ ์œ„ํ•ด RNN ํ˜•ํƒœ์˜ ๋ชจ๋ธ์ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. RNN์˜ ์˜๋ฏธ์™€ ๊ตฌ์กฐ ๋˜‘๊ฐ™์€ weight๋ฅผ ํ†ตํ•ด ์žฌ๊ท€์ ์œผ๋กœ(Recurrent) ํ•™์Šตํ•œ๋‹ค. = RNN(Recurrent Neural Network) xt๋ผ๋Š” input์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด ์ด์ „์— xt-1์—์„œ ํ•™์Šต๋œ A๋ผ๋Š” weight๋ฅผ ํ†ตํ•ด ht๋ฅผ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. RNN์˜ ์—ฌ๋Ÿฌ ํ˜•ํƒœ์™€ ์‚ฌ์šฉ ๋ถ„์•ผ ๋นจ๊ฐ„๋ฐ•์Šค๋Š” ์ธํ’‹, ์ดˆ๋ก๋ฐ•์Šค๋Š” RNN Block, ํŒŒ๋ž€๋ฐ•์Šค๋Š” y(์ •๋‹ต) ํ˜น์€ y^(์˜ˆ์ธก๊ฐ’) ์•„์›ƒํ’‹์ž…๋‹ˆ๋‹ค. one-to-many ์‚ฌ์šฉ๋ถ„์•ผ : image captioning ( input: image, output: sequence of words/toke..

python pytorch ํ…์„œ rank, un squeeze, view, ํ–‰๋ ฌ๊ณฑ

Rank = ์ฐจ์› rank=0 , scalar(1) rank=1 , vector([1,2,3]) rank=2 , matrix([[1,2,3]]) rank=3, n-rank matrix([[[1,2,3]]]]) squeeze, unsqueeze, view๋Š” rank, shape์„ ๋ณ€ํ™˜์‹œํ‚ต๋‹ˆ๋‹ค. view๋Š” ๋ฐ˜๋“œ์‹œ ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. ๊ฐ€๋ น ์•„๋ž˜์˜ x๋ฅผ 2x4์ธ 8๊ฐœ ์›์†Œ๋ฅผ ์ง€๋‹Œ ํ…์‚ฌ๋กœ ๋ฐ”๊ฟ€์ˆ˜๋Š” ์—†๋‹ค. ํ–‰๋ ฌ๊ณผ ํ–‰๋ ฌ๊ณฑ

๋”ฅ๋Ÿฌ๋‹์˜ ๋ชจ๋“  ํ•ต์‹ฌ ๊ฐœ๋… ์ •๋ฆฌ2

์ตœ์ ํ™” : ํ™•๋ฅ ์  ๊ฒฝ์‚ฌํ•˜๊ฐ•๋ฒ• - ์•ˆ์žฅ์ ์„ ๋งŒ๋‚˜๋ฉด ์น˜์†Œ์ ๊ณผ ๊ตฌ๋ถ„ํ•˜์ง€ ๋ชปํ•˜๊ณ  ํ•™์Šต์„ ์ข…๋ฃŒํ•˜๋Š”๋ฐ, ์†์‹ค ํ•จ์ˆ˜์˜ ์ฐจ์›์ด ๋†’์•„์งˆ์ˆ˜๋ก ์•ˆ์žฅ์ ์€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋งŽ์•„์ง€๋ฏ€๋กœ ์ตœ์ ํ•ด๋กœ ์ˆ˜๋ ดํ•˜์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ปค์ง„๋‹ค. SGD ๋ชจ๋ฉ˜ํ…€ - ๊ด€์„ฑ์ด ์ž‘์šฉํ•˜๋ฉด ํ•™์Šต ๊ฒฝ๋กœ๊ฐ€ ์ „์ฒด์ ์œผ๋กœ ๋งค๋„๋Ÿฌ์›Œ์ง„๋‹ค. ์˜ค๋ฒ„์ŠˆํŒ…์ด ๋œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.์ตœ์†Œ์  ์ฃผ๋ณ€์˜ ๊ฒฝ์‚ฌ๊ฐ€ ๊ฐ€ํŒŒ๋ฅด๋ฉด ๋‚ด๋ ค์˜ค๋˜ ์†๋„๊ฐ€ ํฌ๊ธฐ๋•Œ๋ฌธ์— ๋ฐ˜๋Œ€ํŽธ์œผ๋กœ ์˜ค๋ฒ„ ์ŠˆํŒ…์ด ๋œ๋‹ค. ๋„ค์Šคํ…Œ๋กœํ”„ ๋ชจ๋ฉ˜ํ…€ - ๊ด€์„ฑ์ด ์ปค์ง€๋”๋ผ๋„ ์˜ค๋ฒ„์ŠˆํŒ…์ด ๋ ์ง€ ๋ฏธ๋ฆฌ ์‚ดํ”ผ๊ณ  ๊ต์ •ํ•˜๊ธฐ๋•Œ๋ฌธ์— ์˜ค๋ฒ„์ŠˆํŒ…์ด ์–ต์ œ๋œ๋‹ค. AdaGrad - ์†์‹คํ•จ์ˆ˜์˜ ๊ณก๋ฉด ๋ณ€ํ™”์— ๋”ฐ๋ผ ์ ์‘์ ์œผ๋กœ ํ•™์Šต๋ฅ ์„ ์ •ํ•œ๋‹ค. - ํ•™์Šต์ด ์ง„ํ–‰๋ ์ˆ˜๋ก ๊ณก๋ฉด ๋ณ€ํ™”๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๊ณ  ์ ์‘์  ํ•™์Šต๋ฅ ์€ ์ ์  ๋‚ฎ์•„์ง„๋‹ค. ๊ฒฝ์‚ฌ๊ฐ€ ๊ฐ€ํŒŒ๋ฅธ ๊ณณ์—์„œ ์ถœ๋ฐœํ•˜๋ฉด ์ดˆ๊ธฐ๋ถ€ํ„ฐ ์ ์‘์  ํ•™์Šต๋ฅ ์ด ๊ธ‰๊ฐํ•ด์„œ ํ•™์Šต..

๋”ฅ๋Ÿฌ๋‹์˜ ๋ชจ๋“  ํ•ต์‹ฌ ๊ฐœ๋… ์ •๋ฆฌ1

๋”ฅ๋Ÿฌ๋‹์ด๋ž€? - ์ธ๊ณต์‹ ๊ฒฝ๋ง์„ ์ด์šฉํ•ด ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ด€๊ณ„๋ฅผ ์ฐพ์•„๋‚ด๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ๊ธฐ๋ฒ•, ํŠน์ง•์„ ์ž๋™์œผ๋กœ ์ถ”์ถœํ•˜๋ฏ€๋กœ ๋ชจ๋ธ ํ™•์žฅ์„ฑ์ด ๋†’์•„ ๋จธ์‹ ๋Ÿฌ๋‹๋ณด๋‹ค ๋‹ค์–‘ํ•œ ๋ฌธ์ œ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. - ์ง€๋„ํ•™์Šต, ๋น„์ง€๋„ํ•™์Šต, ๊ฐ•ํ™”ํ•™์Šต์—๋„ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ณด์ด๊ณ  ์žˆ๋‹ค. - ๋‹จ, ๋น„์šฉ๊ณผ ์‹œ๊ฐ„, ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์ด ํ•„์š”ํ•˜๋‹ค. ์„ค์ •ํ•ด์•ผ ํ•  ํŒŒ๋ผ๋ฏธํ„ฐ๋„ ๋งŽ์•„ ์ตœ์ ํ™”๊ฐ€ ์‰ฝ์ง€ ์•Š๊ณ . ๋””๋ฒ„๊น…๋„ ์–ด๋ ต๋‹ค. ๋˜ํ•œ ํƒ€๊นƒ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ๋„ ๋น„์šฉ์ด ๋งŽ์ด ๋“ ๋‹ค๋Š” ํ•œ๊ฒŒ๊ฐ€ ์žˆ๋‹ค. ์ˆœ๋ฐฉํ–ฅ ์‹ ๊ฒฝ๋ง(feedforward neural network) - ๋‹ค์ธตํผ์…‰ํŠธ๋ก ์„ ์ˆœ๋ฐฉํ–ฅ ์‹ ๊ฒฝ๋ง, ํผ์…‰ํŠธ๋ก ์€ ์ธ๊ณต ์‹ ๊ฒฝ๋ง์ด๋ผ ๋ถ€๋ฅธ๋‹ค. ์ˆœ๋ฐฉํ–ฅ ์‹ ๊ฒฝ๋ง์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์„œ๋กœ ๋…๋ฆฝ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ์ˆœ๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. - ์ˆœ๋ฐฉํ–ฅ ์‹ ๊ฒฝ๋ง์€ ๋‰ด๋Ÿฐ๋“ค์ด ๋ชจ์—ฌ ๊ฒŒ์ธต์„ ์ด..

ํŒŒ์ดํ† ์น˜ ํŒจํ‚ค์ง€ ๊ธฐ๋ณธ ์กฐ์ž‘๋ฒ• ์ตํžˆ๊ธฐ 3 - python ํ–‰๋ ฌ, ํ…์„œ

view - ์›์†Œ์˜ ์ˆ˜๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ํ…์„œ์˜ ํฌ๊ธฐ ๋ณ€๊ฒฝ t = np.array([[[0, 1, 2], [3, 4, 5]], [[6, 7, 8], [9, 10, 11]]]) ft = torch.FloatTensor(t) ft๋ผ๋Š” ์ด๋ฆ„์˜ 3์ฐจ์› ํ…์„œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ํฌ๊ธฐ(shape)๋ฅผ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. print(ft.shape) torch.Size([2, 2, 3]) 4-1) 3์ฐจ์› ํ…์„œ์—์„œ 2์ฐจ์› ํ…์„œ๋กœ ๋ณ€๊ฒฝ ์ด์ œ ft ํ…์„œ๋ฅผ view๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๊ธฐ(shape)๋ฅผ 2์ฐจ์› ํ…์„œ๋กœ ๋ณ€๊ฒฝํ•ด๋ด…์‹œ๋‹ค. print(ft.view([-1, 3])) # ft๋ผ๋Š” ํ…์„œ๋ฅผ (?, 3)์˜ ํฌ๊ธฐ๋กœ ๋ณ€๊ฒฝ print(ft.view([-1, 3]).shape) tensor([[ 0., 1., 2.], [ 3., 4., 5.], [ ..

ํŒŒ์ดํ† ์น˜ ํŒจํ‚ค์ง€ ๊ธฐ๋ณธ ์กฐ์ž‘๋ฒ• ์ตํžˆ๊ธฐ 2 - python ํ–‰๋ ฌ, ํ…์„œ

ํŒŒ์ดํ† ์น˜ ํ…์„œ ์„ ์–ธํ•˜๊ธฐ(PyTorch Tensor Allocation) import torch 1) 1D with PyTorch ํŒŒ์ดํ† ์น˜๋กœ 1์ฐจ์› ํ…์„œ์ธ ๋ฒกํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด๋ด…์‹œ๋‹ค. t = torch.FloatTensor([0., 1., 2., 3., 4., 5., 6.]) print(t) dim()์„ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ํ…์„œ์˜ ์ฐจ์›์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. shape๋‚˜ size()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. print(t.dim()) # rank. ์ฆ‰, ์ฐจ์› print(t.shape) # shape print(t.size()) # shape 1 torch.Size([7]) torch.Size([7]) ํ˜„์žฌ 1์ฐจ์› ํ…์„œ์ด๋ฉฐ, ์›์†Œ๋Š” 7๊ฐœ์ž…๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ๊ณผ ์Šฌ๋ผ์ด์‹ฑ์„ ํ•ด๋ด…์‹œ๋‹ค. ๋ฐฉ๋ฒ•์€ Numpy ์‹ค์Šต๊ณผ ..