Conv1D

 

Conv1D

 - stride: 연결을 n개씩 이동 (default=1)

 - padding: data가 모자라서 tensor의 양 끝에 0을 추가

 

Conv2D

 - Gradient descent, Backpropagation으로 Kernel 값 초기화

 - kernel_size = 1,3,5,7,9 가 일반적이고, 클수록 필터의 영역이 커짐. 초기에는 7 or 9를 사용함

 

Pooling

 - conv2d layer 뒤에 주로 추가하는 것으로 feature map (input img에 filter를 한 결과)의 크기와 Conv2d의 크기를 줄여줌

 - stride와 비슷하지만 가중치는 없음

 - kernel의 크기에서 최대값 (MaxPool2d) 또는 평균값으로 계산

 

ReLU

 - MaxPooling 이후 수행하는 단계로 비선형 layer를 연결하는 형태로 쓰임

 - Feature map을 Activation map으로 변환

 

View

 - 이미지 문제는 보통 마지막에 Fully connected or linear layer를 두어 결과를 출력

 - 다차원 Tensor를 1차원으로 변환함, view(-1, 320) 으로 사용

https://highsg.tistory.com/29

위와 같은 방법으로 모델 설계시 계산할 수 있어야함!!

 

모델 학습

 1) model.train(): dropout으로 일정 비율 제거, 기울기 계산하여 parameter 변경

 2) model.eval(): dropout, parameter 변경 하지 않음!

 

Transfer Learning

 - 사전에 학습된 알고리즘을 유사한 Dataset에 재사용하여 처음부터 학습하지 않음

 - 적은 양의 데이터로도 작동할 수 있는 방법

 - 대부분 Layer의 Parameter는 그대로 사용하고, 마지막 Classifier (FC Layer)만 미세조정

 - 출력을 분류하려는 Class 수에 맞게 수정하고, feature.param = False로 classifier.param=optimizer로 설정해야 함

 

* Learning 속도 향상시키기: Transfer learning 처럼 마지막 layer에만 param을 바꿀 때, 들어오는 값은 동일하게 된다. 그러면 Conv 계산 결과를 저장하여 재사용하도록 한다.

 1) Dataset, Model을 인자로 받아 모든 Dataset의 Conv feature list, label 목록을 반환하는 함수를 만들고

 2) DataLoader로 label, feature로 batch를 생성하도록 함

'Programming > Deep Learning' 카테고리의 다른 글

7. Recurrent Neural Networks (RNN) & LSTM  (0) 2022.04.08
5. 머신러닝 Workflow  (0) 2021.02.01
4. 머신러닝 입문  (0) 2021.01.22
3. 신경망 구조  (0) 2021.01.19
2. 신경망 구성 요소  (0) 2021.01.13

+ Recent posts