Batch 연산 - bmm

# T1, T2 가 모두 batch 연산
import torch

T1 = torch.zeros((512,5,3))
T2 = torch.zeros((512,3,6))

T3 = torch.bmm(A, B)
print(T3) # torch.Size([512,5,6])

T4 = A @ B # 동일한 결과

Batch 연산 - matmul

# masking 할 때 사용
T3 = torch.matmul(T1, T2) # T2 가 batch 가 아닌 하나만 동일하게 적용

T2.repeat() 연산

 

transpose()

T = [b,n,m]
A.transpose(1,2) # [b,m,n]

view() 가상의 차원 만들기

# 새로운 차원을 만들자
T = [b,n,m]
T.view(n,m,-1) # [n,m,b] 

T = [b,n] # [b,1,n] or [b,n,1]
T.view(b,-1,n)

# 차원을 지워보자
T1 = (T.view(b,-1,n) @ T.viw(b,n,-1)).view(-1) # view(-1) 로 차원 축소 가능

# reshape - view 랑 유사하며 [ ] 이거를 써야함
T.reshape([b,-1,n])

squeeze, unsqueeze - 가상의 차원을 부여하는 것

T = [b,n,m]
T.unsqueeze(3) # [b,n,m,1]
T.unsqueeze(1) # [b,1,n,m]

T1 = [1,m,n]
T1.unsqueeze(0) # [m,n]

vstack, hstack - 앞에 두 차원 쌓기, 세 번째 부터는 cat 사용

T1 = [b,n,m]
T2 = [b,n,m]

torch.vstack([T1,T2]) # vstack 은 0차로 쌓음 > 2b,n,m
torch.hstack([T1,T2]) # hstack 은 1차로 쌓음 > b,2n,m

torch.cat([T1,T2], 3) # b,n,2m

행렬 복제 - T1.clone 

차원 복사 - torch.zeros_like(T1), torch.ones_like(T1)

+ Recent posts