본문 바로가기

SW/DeepLearning

(4)
[Deep Learning] L1 Regularization의 Gradient에 관한 소고 1. 개요 딥러닝을 배우면 Ridge, Lasso regularization에 관해 알게 된다. 각각 L2, L1 norm을 Loss 항에 더하는 방식으로 이루어진다. (실제로는 Norm에 lambda 값을 붙여서 조절해준다.) 이 때 Optimizer로 SGD를 사용한다고 가정하면, for 문 안에서 다음과 같은 수식을 사용한다. Loss 항의 w에 대한 편미분이야 Regularization이 없을 때도 있으니 생략하고, Norm 항의 w에 대한 편미분에 대해 생각해보자. 우선 L2 norm은 간단하다. 모든 weight parameter에 대해 위 연산만큼을 gradient 계산시에 더해주면 된다. 잠깐, 그런데 L1 norm은? 고등 수학을 배웠다면, 절댓값을 씌운 함수는 0에서 미분 불가능하다는 ..
[PyTorch] PyTorch Basic - 기본 틀 0. 개요 여러 Pytorch 에서 모델을 테스팅하기 위한 기본적인 틀을 정리해놓았다. 대부분의 경우 해당 틀에서 데이터 / 모델 내용 / 훈련 방법 만 바꾸면 된다. - Import - Hyperparameters Setting - Preparing Data - Model Structure - Declare : Model, Loss, Optimizer - Train (with validation) & Save - Test - Visualization & Analysis Model Structure과 Train 부분은 워낙 구현 형태마다 다르니, 변수이름은 신경쓰지 말고 형식만 보기를 바란다. 1. Import # torch import torch import torch.nn import torch.nn..
[PyTorch] PyTorch Basic - Data Handling 0. 개요 포스팅수가 영 부족해서 양 채우려고 옛날에 공부하면서 적었던 자료 정리해서 올린다. 아마 1.3.0 버전에서 동작하는 코드일 것. variable, autograd 등 없는 버전이다. - Tensor Creation - Indexing, Joining, Slicing, Squeezing - Initialization - Operations : arithmetic, matrix 1. Tensor Creation (0) Basic import torch int_tensor = torch.IntTensor([[0, 0, 0],[1, 1, 1]]) float_tensor = torch.FloatTensor([[0, 0, 0],[1, 1, 1]]) print(int_tensor) print(float_..
[Pytorch] Pytorch로 ResNet bottleneck 만들기 0. 개요 처음 PyTorch 를 쓰다보면 대부분 torch.nn.Sequential으로 네트워크를 구성하게 되는데, 다들 아는 AlexNet, VGGNet 다음의 ResNet을 구현하려고 하면 난관에 마주치게 된다. Bottleneck layer 을 어떻게 구현하지? 본 포스팅에서는 ResNet의 bottleneck을 만드는 법을 긁어와 정리해보았다. 사실 내부적으로는 다 똑같은데, 코딩 스타일의 차이라고 느껴지지만... 아무튼. 1. ResNet 모듈 따로 만들기 import torch.nn as nn class ResNetModule(nn.Module): def __init__(self): super().__init__() self.inner = nn.Sequential( .. ) self.oute..