일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- dcgan
- ConMatch
- CGAN
- simclrv2
- dann paper
- Pseudo Label
- tent paper
- shrinkmatch paper
- cifar100-c
- CycleGAN
- WGAN
- 컴퓨터구조
- Meta Pseudo Labels
- mocov3
- 최린컴퓨터구조
- 딥러닝손실함수
- conjugate pseudo label paper
- Pix2Pix
- adamatch paper
- CoMatch
- BYOL
- remixmatch paper
- semi supervised learnin 가정
- UnderstandingDeepLearning
- shrinkmatch
- GAN
- 백준 알고리즘
- Entropy Minimization
- SSL
- mme paper
Archives
- Today
- Total
Hello Computer Vision
[pytorch] 기본적인 tensor 조작해보기 본문
딥러닝 훈련을 시키면서 가벼운 텐서로 세팅할 때도 있는데 이럴 때마다 구글을 서칭한다.. 그래서 torch의 가벼운 문법을 정리해보려고 한다.
a = torch.tensor(1)
b = torch.tensor([1])
c = torch.tensor([[1,2, 3], [3,4,5]])
print(a)
print(a.shape)
print(b)
print(b.shape)
print(c)
print(c.shape)
tensor(1)
torch.Size([])
tensor([1])
torch.Size([1])
tensor([[1, 2, 3],
[3, 4, 5]])
torch.Size([2, 3])
이렇게 가벼운 텐서 정도는 torch.tensor를 사용해서 생성할 수 있다.
a = torch.arange(1, 40)
print(len(a))
39
이렇게 나열할 텐서에 대해서 len 함수도 적용할 수 있다.
a = torch.rand(2,3,4)
b = a.unsqueeze(-1)
print(b.shape)
torch.Size([2, 3, 4, 1])
차원을 다룰 때 unsqueeze같은 경우 dim 인자를 -1로 두어 마지막 차원을 늘릴 수 있다.
a = torch.arange(1, 10+1)
print(a.topk(3))
torch.return_types.topk(
values=tensor([10, 9, 8]),
indices=tensor([9, 8, 7]))
지난 번에도 다루었던 topk 함수이다. 상위 몇번째 값까지 반환하는지 인자로 줄 수 있다. 해당 메소드는 튜플 값을 반환하는데 첫번째 값은 value값, 두번째 값은 인덱스 값이다.
a = torch.arange(1, 10+1)
print(a.argmax(0))
b = torch.rand(3, 4)
print(b.argmax(1))
tensor(9)
tensor([1, 3, 0])
torch자체의 메소드를 통해 해당 차원에서 가장 높은 값의 index를 반환하는 argmax도 활용할 수 있다.
a = torch.rand(2,3)
b = torch.rand(2,3).unsqueeze(-1)
print(b.view_as(a).shape)
torch.Size([2, 3])
view_as 메소드를 통해 크기를 맞추어줄 수있는데 여기서 주의할 점은 총 보유한 텐서가 같아야 활용할 수 있다. 모양이 완전히 다르더라도 보유한 텐서만 같다면 크기를 맞추어줄 수 있다,
a = torch.rand(2,3)
b = torch.rand(1,6).unsqueeze(-1)
print(b.view_as(a).shape)
torch.Size([2, 3])
그리고 classification 훈련할 때 다음과 몇개나 맞았는지 알 필요가 있는데 그럴 때는 eq메소드를 활용할 수 있다.
a = torch.arange(1, 6)
b = torch.tensor([1,2,4,3,5])
c = a.eq(b)
print(c)
print(c.sum())
tensor([ True, True, False, False, True])
tensor(3)
'딥러닝 > 파이토치' 카테고리의 다른 글
[pytorch] 데이터셋 합치기 (0) | 2024.02.17 |
---|---|
[pytorch] 행렬 계산 (0) | 2024.02.17 |
[pytorch] Nan, inf알아보기 (0) | 2024.02.06 |
[pytorch] load state dict 후 업데이트 (0) | 2024.01.22 |
CIFAR10-C 데이터셋 다루기 (0) | 2024.01.20 |