본문 바로가기

SW

(6)
[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..
[Python] 파이썬 패키지 만들기, 테스트(unittest), 빌드, PyPI로 배포 1. 패키지 만들기 (0) 매뉴얼 www.packaging.python.org/tutorials/packaging-projects 를 참고하였다. (1) 디렉토리 구조 설계 ROOT ├── setup.py ├── requirements.txt ├── LICENSE ├── README.md └── package ├── __init__.py └── module.py 위와 같은 디렉토리 구조를 가진 패키지를 만들 었다고 가정하자. (2) 코드 짜기 /package/__init__.py # /package/__init__.py """ Description for Package """ from package.module import Example_class, method # from package import *..
[DataScience] Selenium Basic - 셀레니움 기초 정리 공부하며 jupyter notebook으로 정리한 내용을 복습하는 겸 공유하기 위해 작성한다. 1. 크롤링이란? 한마디로 "자동 정보 수집 기계" 라고 할 수 있다. 물론 쓰다보면 융통성 없는 크롤러에게 빡쳐서 "자동" 을 빼고싶어진다. 2. Selenium이란? 옛날 옛적 사람들이 C와 Java만을 사용하던 시절을 지나, 이젠 python으로 크롤링을 하기 시작했다. 파이썬은 게으른 사람들을 위한 언어인 만큼 남들 쓰기 편하게 라이브러리를 만들기 시작하는데, BeautifulSoup이 대표적이다. 그런데 이걸로 크롤링하니까 여러가지 한계점들이 있었다. 예를 들자면, 사람이 클릭할 때는 버튼이 다 뜬걸 보고 클릭하는데 기계는 버튼의 wrapper만 나타나도 클릭을 해버리는 등의 것이 있다. 그 외에도 r..