일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- semi supervised learnin 가정
- simclrv2
- Pix2Pix
- CycleGAN
- 딥러닝손실함수
- BYOL
- remixmatch paper
- 백준 알고리즘
- Entropy Minimization
- GAN
- conjugate pseudo label paper
- shrinkmatch
- SSL
- shrinkmatch paper
- cifar100-c
- 최린컴퓨터구조
- WGAN
- UnderstandingDeepLearning
- mme paper
- CoMatch
- Pseudo Label
- dcgan
- Meta Pseudo Labels
- mocov3
- ConMatch
- 컴퓨터구조
- dann paper
- adamatch paper
- tent paper
- CGAN
Archives
- Today
- Total
Hello Computer Vision
[pytorch] 행렬 계산 본문
이번에 논문에 나온 값들이 어떻게 변하는지 알아보려던 찰나에 아무 생각 없이 * 연산자를 쓰니까 원하던 값들이 안나와서 적어두려고 한다.
x = torch.tensor([[0.85, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.07]])
xt = torch.transpose(x, 0, 1)
i = torch.eye(10)
diag = torch.diag(x)
xx = xt * x
k = (i + 8*i - 8*xx)
k = torch.inverse(k)
pseudo = k.matmul(xt)
p = torch.mul(k, xt).sum(0)
print(xt.shape)
print(x.shape)
print(i.shape)
print(xx.shape)
print(k.shape)
print(pseudo.shape)
print(pseudo)
print(p)
torch.Size([10, 1])
torch.Size([1, 10])
torch.Size([10, 10])
torch.Size([10, 10])
torch.Size([10, 10])
torch.Size([10, 1])
tensor([[0.2678],
[0.0032],
[0.0032],
[0.0032],
[0.0032],
[0.0032],
[0.0032],
[0.0032],
[0.0032],
[0.0221]])
tensor([0.2678, 0.0032, 0.0032, 0.0032, 0.0032, 0.0032, 0.0032, 0.0032, 0.0032,
0.0221])
기본적으로 *, mul을 사용하면 element wise 곱셈이 되버려서 원하는 행렬크기, 값들이 안나온다. 따라서 행렬간의 내적을 하고 싶으면 matmul 을 사용해야하고 *을 사용한다면 sum 을 해줘야한다.
'딥러닝 > 파이토치' 카테고리의 다른 글
CIFAR100-C, CIFAR100 비교 (0) | 2024.02.29 |
---|---|
[pytorch] 데이터셋 합치기 (0) | 2024.02.17 |
[pytorch] 기본적인 tensor 조작해보기 (0) | 2024.02.06 |
[pytorch] Nan, inf알아보기 (0) | 2024.02.06 |
[pytorch] load state dict 후 업데이트 (0) | 2024.01.22 |