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)