본문 바로가기
728x90

파이토치7

[PyTorch] (B,C,H,W) 이어 붙이기 tensor.randn((B,) + (C,H,W)) CNN을 이용하여 Image Classification하는 훈련 train을 시킬 때 데이터를 (배치사이즈(B), 채널(C), 높이(H), 너비(W))를 차례대로 텐서의 크기를 맞춰서 코드를 작성해야할 때가 있다. 이때 배치사이즈만 따로 떨어져 있는 때가 있다. 이 때 tensor.randn((B,) + (C,H,W))를 이용하면 tensor((B,C,H,W)) 사이즈라는 것을 알릴 수 있다. 예제 # x_dim = (1,28,28) batch_in.view(-1,x_dim) #(batch_size, 1 * 28 * 28) batch_in.view((-1,)+x_dim) #(batch_size, 1, 28, 28) 2023. 11. 9.
torch.stack() 과 torch.cat() torch.stack() 과 torch.cat() 모두 행렬을 연결하는데 쓰인다. 하지만 둘의 다른점을 비교하지 않으면 가끔 혼란스러울 수 있다. 따라서 한번 정리하고 넘어가려 한다. torch.cat()은 주어진 차원을 기준으로 주어진 텐서들을 연결(concatenate)한다. torch.stack()은 새로운 차원으로 주어진 텐서들을 연결한다. import torch x = torch.FloatTensor([1,4]) y = torch.FloatTensor([2,5]) z = torch.FloatTensor([3,6]) print(x.shape) #torch.Size([2]) print(torch.stack([x,y,z])) # tensor([[1., 4.], # [2., 5.], # [3., 6.].. 2023. 4. 8.
[PyTorch] masked_fill() 함수 사용 예시 파이토치에서 masked_fill() 함수는 파이토치 tensor 의 특정 값을 다른 값으로 바꾸고자 할 때 사용된다. document 가 좀 설명이 부실한 것 같아서 예시로 하나 사용해보면 import torch import torch.nn.functional as F example = torch.FloatTensor([[1, 2, 3], [4, 5, 6]]) # 특정 행렬 mask = torch.FloatTensor([[0, 1, 1], [1, 0, 1]]) # 바꾸고자 하는 행렬의 원소를 0 고정하고자 하는 행렬의 원소를 1로 둔다. result = example.masked_fill(mask == 0, 5.5) # 0을 5.5로 변환 print(result) 2023. 1. 2.
[PyTorch] torch.transpose()와 numpy().transpose() 차이 파이토치의 transpose는 N $\times$ M 만 transpose 할 수 있다는 단점이 있다. 그러면 N $\times$ M $\times$ K는 어떻게 나타낼 수 있을까? => numpy로 바꾼 후 transpose() 하면 된다. import torch import numpy as np x = torch.rand(3,4,2) print(x.numpy().transpose((1,2,0))) 2023. 1. 1.
728x90