'모두를 위한 딥러닝 시즌 2' 강의를 듣고 공부하는 스터디 입니다. https://deeplearningzerotoall.github.io/season2/lec_tensorflow.html
비대면 10 May, 2023
09-3 Dropout
-overfitting 방지
?학습을 진행하면서 각 레이어에 존재하는 노드를 사전에 설정한 비율에 따라 껐다 켰다를 반복함→켜져있는 노드의 가중치만을 사용해 output을 계산함.
dropout = torch.nn.Dropout(p=drop_prob)
model = torch.nn.Sequential(linear1, relu, dropout, ... )
*test할 때는 dropout 사용하지 않음
model.eval() #dropout = False
09-04 Batch Normalization
Gradient Vanishing/Exploding
Gradient Vanishing? 그래디언트가 작아지면서 소멸하는 현상
Gradient Exploding? vanishing문제와 반대. 미분을 계산할 때 값이 너무 크거나 nand값이 나올 때
→ change activation function, careful initialization, small learning rate(간접적 방식)
→Batch Normalization
Internal Covariate Shift
Covariate Shift? test set와 train set의 분포에 차이가 있기에 발생하는 문제가 있다. 한 레이어의 입력과 출력의 분포에 차이가 있다.
-레이어마다 covariate shift가 있기 때문에 레이어가 깊어질수록 더 큰 변화가 발생
→Batch Normalization? mini-batch마다 normalization을 하는 것
training: x→(m(=sample mean), sigma(=sample variance))normalize→x_hat, backpropagation→(gama,beta)scale and shift
한 train set 끝나면 sample mean/variance을 learning mean/variace로 고정→ gama*x_hat+beta 를 적용하여 batch normalize된 input을 활용
⇒batch data 구성이 달라져도 같은 output을 얻을 수 있음
[CNN]
10-1 Convolution
?이미지 위에서 stride 값 만큼 filter(kernel)을 이동시키면서 겹쳐지는 부분의 각 원소의 값을 곱해서 모두 더한 값을 출력으로 하는 연산
stride? filter를 한 번에 얼마나 이동할 것인가
padding: zero padding
Pytorch nn.Conv2d
torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0,
dilation=1, groups=1,bais=True)
input type: torch.Tensor, shape:(batch_size, channel, height, weight)
ouput size = (input size-kernel size+(2*padding))/stride+1
-stride로 나눌 때 소수점 나오면 버리고 1 더하기
Neuron과 Convolution
convolution의 filter값이 perceptron의 weight값으로 들어감.
filter가 지나가는 input의 부분부분이 train data set
convolution filter도 bias를 가질 수 있음
Pooling
-이미지 사이즈를 줄이기 위해, fully connected 연산을 대체하기 위해
max pooling: 정해진 사이즈 안에서 가장 큰
average pooling: 정해진 사이즈 안에서 평균
torch.nn.MaxPool2d(kernel_size, stride=None, padding=0,
dilation=1, return_indices=False, ceil_mode=False)
input → filter → conv → pool → output
대면 8 April, 2023
Top comments (0)