일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- remixmatch paper
- mme paper
- shrinkmatch
- dcgan
- SSL
- Pix2Pix
- tent paper
- CoMatch
- shrinkmatch paper
- Entropy Minimization
- semi supervised learnin 가정
- dann paper
- 딥러닝손실함수
- Meta Pseudo Labels
- simclrv2
- WGAN
- CycleGAN
- mocov3
- ConMatch
- UnderstandingDeepLearning
- 최린컴퓨터구조
- 백준 알고리즘
- BYOL
- 컴퓨터구조
- GAN
- CGAN
- conjugate pseudo label paper
- Pseudo Label
- cifar100-c
- adamatch paper
Archives
- Today
- Total
Hello Computer Vision
einops rearrange 공부해보기 본문
이번에 ViT를 공부하는 와중에 텐서를 조금 더 내 자유자재로 만들 수 있는 라이브러리를 발견했다
그건 바로 einops!
terminal 에 pip install einops 하면은 금방 설치할 수 있다.
한번 코드 예시를 통해 알아보겠다. 매우 직관적이므로 쉽게 알 수 있다.
from einops import rearrange
import torch.nn as nn
import torch
img = torch.rand(8, 224, 224, 3)
print(img.shape)
print(rearrange(img, 'b h w c -> b c h w').shape)
print(rearrange(img, 'b h w c -> (b c) h w').shape)
print(rearrange(img, 'b h (w1 w2) (c1 c2) -> b h c1 c2 w1 w2', w1 = 2, c1 = 1).shape)
torch.Size([8, 224, 224, 3])
torch.Size([8, 3, 224, 224])
torch.Size([24, 224, 224])
torch.Size([8, 224, 1, 3, 2, 112])
첫번째 결과값은 처음에 설정한 이미지의 크기이다.
두번째는 그 순서들을 살짝 변경했음을 알 수 있다. 이 부분은 reshape이나 view를 통해서도 할 수 있다.
세번째는 결과값에 대해 괄호로 묶어 곱셈으로 표현하였음을 알 수 있다.
네번째 결과값은 매우 신기하다. input 값들에 대해 괄호로 묶고 따로 인자를 주면은 텐서크기를 조절할 수 있다.
여기서 w1, c1 만 인자로 주어도 나머지 w2, c2같은 경우 알아서 배정이 된다.
앞으로 더 쓸일이 많을 거 같다.
'딥러닝' 카테고리의 다른 글
CNN 에서의 subsampling (0) | 2023.03.09 |
---|---|
GRN(Global Response Normalization)에 대한 이해(LRN을 곁들인) (0) | 2023.02.18 |
Dilated Convolution 이란 (0) | 2023.01.17 |
Convolutional Neural Network 특징 (0) | 2023.01.05 |
RNN(Recurrent Neural Network)에 대한 이해해보기 (0) | 2023.01.02 |