저번 시간에 구성한 mobileNetv3 search space를 확장성을 위해서 리팩터링하자.우선 위와 같은 search space를 만들어주고 위와 같은 아이템을 뽑는 클래스를 만들어주자
다수의 논문을 검토해본 결과 학습하는 데 매우 많은 시간과 자원이 드는것을 알 수 있었다. 따라서 일단 nas자체도 경량화를 하면서 mobileNetv3에서 사용되는 mnas와 결합하여 새로운 nas를 만들도록 하자.경량화의 경우 Enasreward의 경우 Mnas이
mobileNetv3와 mobileNetv4는 각각 Nas 알고리즘중에서 Mnas, Tunas를 이용한 구현체를 사용한다. mobileNetv3에서 mnas구현체를 이용해서 구한 아키텍처에 NetAdapt를 적용하여 경량화를 이끌어낸다. 이 시리즈의 목적이 단순히 구현
파인튜닝 별 거 없고 모두가 아는 그 과정을 통해 구현했다. 옵티마이저는 gpt가 추천하는 adamw를 사용했다. adamw는 나중에 학습할 예정이다.논문 레시피에 따르면 proposal 마다 파인튜닝을 진행하고 있다. layerwise에서 pruning을 진행하고 바
filter pruning 기준치 이하의 필터를 통채로 없애는게 논문의 포인트이다. 없애고 torch.argsort(layer.weight.abs().sum(dim=[1, 2, 3]))[numfiltersto_prune:] 를 이용해서 weight의 절대값의 합이 적
resource를 직접 측정하는 코드filter를 pruning하는 코드ShortTermFineTuner ClassAccuracyEvaluator ClassNetAdaptAlgorithm Class이런식으로 일단 나눴다. 오늘은 그 중 resource를 직접 측정하는
NetAdapt 참고 논문 https://arxiv.org/abs/1804.03230 과정 NAS과정을 통해 시작점인 seed network architecture를 설정한다 기존 아키텍처를 이것저것 수정해본 여러개의 아키텍처를 만든다 변형한 아키텍처가 지연
mobileNet v3 목표 mobileNet v2까지 경량화는 flops, parameter와 같은 실제적인 연산량을 줄이려고 노력했다면 mobileNet v3, v4를 비롯한 다른 최신 경량화 모델은 latency, memory의 병목 등을 신경쓰기 시작했다. 현
구현할 것 InvertedResidual SE Block (Squeeze-and-Excitation Block) H-Swish Activation NetAdapt h-swish 고민을 좀 했다. 이미 구현되어 있는게 nn에 있어서 근데 이번 시리즈는 학습을
객체지향적으로 만들고 있기 때문에 mobileNetV3의 모듈을 최대한 작게 나눌것 이다.일단은 다음과 같이 생각하고 있다.InvertedResidual: 사실상 많이 바뀐 부분이고 레시피가 정해져있기 때문에 주의할 것SE Block (Squeeze-and-Excita
InvertedResidual 우선 mobileNetV2 경량화의 핵심은 bottleNeck과 residual의 개념을 합친 것이고 그 개념은 전 편에서 소개했었다. 이번엔 InvertedResidual를 모듈식으로 구현 해보자. depthwise, pointwise
특징 mobileNetv2의 아키텍처의 특징은 the inverted residual with linear bottleneck이다. mobileNet 시리즈의 특징이 그렇듯 이전 버전의 아키텍처와 현재 버전 사이에 중요한 경량화 아키텍처를 모두 흡수해 정제하는 구조를
저번 시간에 depthwise의 개념에 대해 알았고 그걸 구현해보자.depthwise의 핵심은 입력 채널이 커널의 채널과 일대일 대응한다는 점이다.직접 만들 수 있지만 torch에 이미 conv에 대한 구현이 있다. 우리가 주목할건공식문서를 찾아보면 group에 대한
기존 CNN 아키텍처를 생각 해보기 전에 입력 데이터의 공간에 대해서 생각하자.이미지에서 입력 데이터는 벡터로 표현되고 공간과 채널에 대한 3차원 데이터로 주어진다.공간 데이터는 이미지가 어느 공간에 있는 지를 알려준다. 예를 들어서 이미지 파일을 2차원으로 생각하면
VIT - 큰 테이터 셋에 적합하고 비용이 커서 경량화랑 잘 안 맞음 -> 탈락 CNN + VIT 혼합 모델 중에서 MobileVit, TinyVit 고려 CNN 경량화 모델과 경량화 혼합 모델 2개를 선정하여 성능비교 CNN 경량화 테크닉 pruning qua
regularization l1, l2를 이용 Dropout ci가 layer의 connections의 수 cio는 original network cir는 retraining network Do는 original network의 dropout ratio Dr =
CNN 모델의 구성을 살펴보고 들어가자 이제껏 시리즈에서 데이터를 가공하고 로드하는 걸 객체지향적으로 만들어놨다. 대부분의 참고자료는 재생산성을 무시한 절차적 프로그램에 가깝다고 생각한다. 절차지향적으로 코드를 구성하는 건 너무 쉬운 일이지만 이번엔 최대한 객체지향적
모멘텀은 딥러닝 최적화 방법 중 하나로 물리의 운동량에서 영감을 얻었다고 한다.위 SGD 그래프를 아래와 같이 부드럽고 효과적으로 수렴하게 해준다.물리학에서 운동량은 하나의 단위다. 고등학교 물리에선 시공간, 속도 등을 이용해서 표현하기 때문에 운동량이란 단위는 생소할