Bootcamp/KT aivle school

CNN과 Hidden Layer with pytorch

Nyamggoon 2025. 4. 8. 20:08

딥러닝

-데이터 전처리가 필요하다.

Null값 조치, 더미변수화, 정규화, 데이터 분할

텐서로 변환, Data Loader(train set) 으로 변환

-모델링에서는 손실함수, Optimizer, 모델 설계, learning rate에 대한 검토가 필요함

 

Data Loader : Batch size 만큼 쪼개서 데이터를 제공한다

Feed Forward : 예측하고, 오차를 계산 / Back propagation : 가중치를 조정

 

과적합을 막는 수단들

-Epoch, learning rate

-hidden later, node 숫자들

-Early Stopping : val error이 이전 최소 val error 보다 계속 높아지는게 일정 횟수 반복되면 학습 종료

-Dropout : hidden layer의 노드 중 일정 비율을, 학습 과정에서 임의로 제외시키는 것
cf) 노드 수를 직접 줄이는 것과는 다른 이야기임!

 

클래스로 모델을 생성 및 선언

모델로 하는 것보다 유지보수 측면 및 복잡한 모델 생성시 좋음

-nn.Module 을 상속, __init__() 해당 괄호 안에 입력받을 변수 넣어줌 -> def __init__에는 레이어 층을 선언해준다.
cf) 각 hidden layer 는 중복되는 것 처럼 보여도 각각 다 선언해줘야 함!

-def forward 안에 실제 층을 쌓는다.

이미지 처리 CNN

특징을 추출하고, 분류 및 인식을 하는 과정

1. input shape : 이미지를 투입
2. Convolutional Neural Network : feature을 추출
nn.Conv2d를 사용, kernel_size(커널사이즈), stride(필터가 움직이는 간격), padding(테두리 덧대기=사이즈 동일하게 만듦) 옵션을 조절해준다.  padding option으로 크기 유지시킬수도 있음

3. MaxPooling : Pooling 을 통해서 압축시켜준다.
nn.MaxPool2d를 사용, kernel_size, stride 옵션을 조절해준다.


4. Flatten 이후 Dense Layer에 연결 : nn.Flatten() 이후 nn.Linear() 로 연결!