목록AI/PyTorch (19)
꺼내먹는지식 준

nn.Module nn.Module 클래스는 여러 기능들을 한 곳에 모아놓는 상자 역할을 한다. nn.Module 내부에는 여러 nn.Module 상자를(nn.Linear ..) 포함할 수도 있다. nn.Module 상자는 설계자의 의도대로 아래의 예시와 같이 다양하게 사용될 수 있다. 1) nn.Module이라는 상자에 기능들을 가득 모아놓은 경우 basic building block 2) nn.Module이라는 상자에 basic building block인 nn.Module들을 가득 모아놓은 경우 딥러닝 모델 3) nn.Module이라는 상자에 딥러닝 모델인 nn.Module들을 가득 모아놓은 경우 더욱 큰 딥러닝 모델 Pytoch Official 사이트는 다음과 같이 설명한다. Base class ..
Torch Math Operations 다음의 같은 항목으로 구성되어있다. 1) Pointwise Ops 2) Reduction Ops 3) Comparison Ops 4) Spectral Ops 5) Other Operations 6) BLAS and LAPACK Operations Utilities 1) Pointwise Ops 말그대로 Point-wise 연산처리 관련 함수 간단하게 3개만 살펴보자. sigmoid erf trunc A = torch.tensor([1,2,3,4,5,99]) torch.sigmoid(A) #tensor([0.7311, 0.8808, 0.9526, 0.9820, 0.9933, 1.0000]) torch.erf(A) #tensor([0.8427, 0.9953, 1.000..
Torch.is_tensor( x ) $\rightarrow$ Boolean x 가 tensor 인지 확인 후, Boolean Return torch.numel(x) element 개수 Return # len(x) 는 차워에 따라 값이 바뀌므로 사용할 수 없다. https://pytorch.org/docs/stable/torch.html#tensors Torch.Tensor는 다음의 세부 항목으로 분류 된다. - "Creation Ops" - "Indexing, Slicing, Joining, Mutating Ops" 1) Creation Ops : Tensors"라는 자료구조를 만드는 함수들 대표 예제 3가지 from_numpy zeros zeros_like import torch import nump..
torch.index_select(input, dim, index, *, out=None) → Tensor Torch Indexing 1) numpy indexing 기법 2) torch.index_select A = torch.Tensor([[1, 2], [3, 4]]) A[:,0] #1,3 A[:][0] # 1,2 == A[0] torch.index_select(A, 1, indices) #[[1.], [3.]] output.squeeze(1) # [1., 3.] torch.index_select 엄청 번거롭다. 3) torch_gather torch.gather(input, dim, index, *, sparse_grad=False, out=None) → Tensor output = torch.ga..

딥러닝에서 가장 중요한 요소는 바로 대용량 데이터이다. 모델도 중요하지만, 결과를 결정짓는건 결국 데이터라고 말을 할 정도다. Pytorch에서는 대용량 데이터를 잘 처리해주는 Dataset API 를 제공한다. Dataset Feeding 과정에 대한 정리 1. 데이터의 전처리는 두가지 과정으로 나뉜다. 1) 데이터 수집, 다룰 수 있도록 처리 2) ToTensor 즉, 숫자로 변환 2. Dataset 어떻게 시작하고, 길이를 반환하고, item을 call 했을 때 어떻게 반환해줄건지에 대한 것을 정한다. 3. DataLoader를 통해 batch 크기, shuffle 여부, 등등을 정한다. 4. Model에 투입 Dataset 클래스 데이터 입력 형태를 정의하는 클래스 데이터 입력 방식 표준화 Ima..

딥러닝에서 layer를 흔히 레고 블럭에 많이 비유한다. 레이어를 정의한 후, 연결하여 정보를 다음 단계로 넘기는 과정이 마치 레고를 연속적으로 붙이는 것과 유사해서이다. 블록 반복의 연속 대표적으로 Transformer만 보아도, Multi-head attention ... Linear, Soft Max 등의 각각의 레이어, 그리고 레이어들이 합쳐져서 하나의 큰 블록을 형성한 레이어들이 합쳐진 구조이다. Torch.nn.Module 딥러닝을 구성하는 Layer의 base class 기본적으로 정의해야하는 4가지 1) Input 2)Output 3)Forward 4)Backward 정의 학습의 대상이 되는 parameter(tensor) 정의 (Backward Weight) nn.Parameter Ten..

Pytorch Project Template Overview 1) 초기 단계에서는 대화식 개발 과정이 유리 $\rightarrow$학습과정과 디버깅 등 지속적인 확인 2) 베포 및 공유 단계에서는 notebook 공유의 어려움 $\rightarrow$ 쉬운 재현의 어려움, 실행 순서 꼬임 3) DL 코드도 하나의 프로그램 $\rightarrow$ 개발 용이성 확보와 유지보수 향상 필요 레고 블럭 처럼 OOP + 모듈 $\rightarrow$ 프로젝트 다양한 프로젝트 템플릿 존재 사용자 필요에 따라 수정하여 사용 실행, 데이터, 모델, 설정, 로깅, 지표, 유틸리티 등 다양한 모듈들을 분리하여 프로젝트 템플릿화 즉, 한마디로 개발할 때는 대화식 개발로 디버깅하며 모델을 구축하고, 추후 배포와 유지보수를 위..

Pytorch의 강점 1) Numpy 2) AutoGrad 3) Deep Learning을 지원하는 다양한 함수와 모델 Tensor 다차원 Arrays를 표현하는 Pytorch 클래스 사실상 numpy의 ndarray와 동일 1) Tensor를 생성하는 함수도 거의 동일 import numpy as np n_array = np.arange(10).reshape(2,5) import torch t_array = torch.FloatTensor(n_array) 결과 tensor[[0., 1., 2., 3., 4.] [5., 6., 7., 8., 9.]] shape(2,5) data to tensor , ndarray to tensor data = [[3,5],[10,5]] x_data = torch.tens..

립러닝 프레임 워크는 양분되어있다. Pytorch Tensorflow :두개 프레임워크의 가장 큰 차이는 컴퓨태이셔널 그래프 표현 방식이다. Computational Graph 연산 과정을 그래프로 표현 Pytorch는 실행시점에서 그래프를 그리는 반면, Tensorflow는 static 하게 그래프를 그린 후에, 실행 시점에서 backward propagation이 일어난다. Pytorch Numpy + AutoGrad + Function(다양한 형태의 DL 지원 함수와 모델)