728x90
Einstein summation
numpy, torch, tensorflow ๋ฑ ๋ค์ํ Tensor Type์ ํํ๋ฅผ ๋ณํํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค. ํ์ฌ๋ einops์ ์ฝ๋๋ฅผ ํจ๊ป ์์ฑํ๋ฉด ์ ๋ง ๋ชจ๋ ์ด๊ฐ ์์๋ณผ ์ ์์ ์ค๋ช ์ ๊ฐ์ ๋ชจ๋ธ์ ์์ฑํ ์ ์๋ค.
Example)
Attention์์ energy๋ฅผ ๊ตฌํ ๋ Q ์ K^T์ ํ๋ ฌ๊ณฑ์ Key ๋ถ๋ถ์ Transpose๋ฅผ ์ฝ๊ฒ ํํ ๊ฐ๋ฅ
quries = torch.tensor(np.array([i for i in range(0,240)]).reshape(1,2,6,20),dtype=torch.float64)
keys = torch.tensor(np.array([i*2 for i in range(0,240)]).reshape(1,2,6,20),dtype=torch.float64)
energy = torch.einsum('bhqd, bhkd -> bhqk', quries, keys)
print(energy.size())
print(f'att {F.softmax(energy, dim=-1).size()}')
#torch.Size([1, 2, 6, 6])
#att torch.Size([1, 2, 6, 6])
Vision in Transformer: 1 X 3 X 224 X 224์ ์ด๋ฏธ์ง์์ 16 X 16์ kernel์ ๊ฑฐ์น Shape๋ฅผ ํํํ ๋๋ ์ง๊ด์ ์ผ๋ก ์ฝ๋์ ๋ช ์ํ ์ ์๋ค.
b (h k1) (w k2) c -> b (h w) (c k1 k2)
patch_size = 16 # paper default
## 1, 3, 224 ,224 -> 1, (14x16=224) (14x16=224) -> 1, (14 14) (16 16 3)
patches = rearrange(x, 'b c (h k1) (w k2) -> b (h w) (k1 k2 c)',k1=patch_size, k2= patch_size)
๋ฐ์ํ
'๐พ Deep Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[mac] VToonify [...ing] (0) | 2023.01.15 |
---|---|
ViT(Vision in Transformer) Review (0) | 2022.12.19 |
[Computer Vision] Image Modul Pillow import Error (0) | 2022.12.14 |
[Model Train Error] ๋ชจ๋ธ ํ์ต ์ ๋ฌดํ ๋ฃจํ /Unknown batch (0) | 2022.05.25 |
[Kaggle ImageClassification] Image Training Trick (0) | 2022.05.24 |