스터디/AI

파이토치(1): Date Set & Tensor

민서타 2023. 9. 27. 18:57

1. Data Set

-가상의 함수를 통해 데이터 쌍(x, y)을 수집해 데이터 셋을 만들고 함수가 데이터를 통해 가상의 함수를 모방

-Ex) 신경망 등 활용 / 이때 x와 y는 각각 n차원과 m차원의 벡터로 표현될 수 있다


2. Tensor

-3차원 이상의 Data

-문장에서 단어와 특징으로 비유 가능 lxl = (문장, 단어, 특징)

Tensor Allocation:
ft = torch,FloatTensor([1, 2], [3, 4])  #실수형 텐서 반환
lt = torch,LongTensor([1, 2], [3, 4])  #매트릭스형 반환
bt = torch,ByteTensor([1, 2], [3, 4])  #Boolean값 형태 (1, 0)
Numpy와 호환:
torch.from_numpy(x) #텐서를 넘파이로
객체.long(), 객체.float(), 객체.FloatTensor([1, 0]).byte() #텐서 값 타입 캐스팅

Tensor Shape:
객체.size() or 객체.shape
객체.dim() or len(객체.size())
객체.reshape() #객체 형태 변환, -1값은 자동 연산(알아서 fit하게 해줌)
객체.squeeze() #차원 줄이기(1값), 0,1,2 등 인덱스 num으로 원하는 차원 값 감소 가능
객체.unsqueeze() #차원 늘리기(1값)

 ★ Size가 달라도 Brodcasting 연산으로 같은 tensor로 만들어줌 (1, 2), (2, 1) --> (2, 2), (2, 2)


Tensor Paste & Cut / Randperm

객체.split(4, dim=0) #0번 차원을 4로 쪼개고 그 외 할당
객체.chunk(3, dim=0) #숫자로 나누기
객체.index_select(dim = 0, index = 다른객체) # 다른객체 인덱스로 차원 구분
torch.cat([x, y], dim=0) #dim 차원으로 concat (3, 3, 1) , (3, 3, 1) => (6, 3, 1)
torch.stack([x, y]) # 차원을 쌓음 (3,3) , (3,3) => (2, 3, 3)
객체.expand # 차원 확장
torch.randperm(3**3).reshape(3, 3, -1) 27개의 무작위값 (3,  3 , -1)
values, indices = torch.topk(x, k=1, dim= -1 #k개의 value와 튜플 값 리턴
values, indices = torch.sort(x, k=1, dim= -1, descending = True
values ,indices = values[:, :, :k], indices[:, :, :k] #sort 활용 Topㅏ

Masked_fill & Ones and Zeros

mask = x > 4
x.masked_fill(mask, value = -1) $마스크 조건이 맞을 경우 원래 값, 아닐 경우 -1 반환
torch.ones_like(x), torch.zeros_like(x) #1과 0값으로 채우기

 

반응형