일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 딥러닝손실함수
- WGAN
- CycleGAN
- remixmatch paper
- conjugate pseudo label paper
- dann paper
- mocov3
- Pseudo Label
- ConMatch
- GAN
- semi supervised learnin 가정
- CGAN
- CoMatch
- 백준 알고리즘
- BYOL
- 최린컴퓨터구조
- shrinkmatch paper
- cifar100-c
- Meta Pseudo Labels
- simclrv2
- UnderstandingDeepLearning
- SSL
- 컴퓨터구조
- shrinkmatch
- Entropy Minimization
- mme paper
- tent paper
- Pix2Pix
- dcgan
- adamatch paper
Archives
- Today
- Total
Hello Data
[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 |