CNN 모델의 성능 평가 학습된 CNN의 모델 평가는 다양한 지표로 이루어지며 가장 직관적으로 사용되는 지표는 accuracy다. 딥러닝을 처음 배울 땐 accuracy, f1 score, precision, recall 이 4개를 평가지표로 배우고 accuracy
굉장히 주관적인 리뷰 사실 once-for-all 논문의 방법론에 Regularized Evolution for Image Classifier Architecture Search란 논문의 evolution nas를 이용했다고 해서 살펴보았다. 논문이나 글 들을 보면
proxyless Nas proxyless를 알아보기 전에 Nas에서 proxy가 뭔지 짚고 넘어가자. cifar-10 우선 논문을 많이 읽어보면 알겠지만 CNN 이미지 분류 실험은 보통 cifar-10으로 많이 실험한다. 규모가 작은편이고 이미 많이 써왔기 때문
경량화에 Nas(Neural Architecter Search)가 필요한 이유는 연구의 흐름을 살펴봐야한다.mobileNet을 필두로 squeeze and exited, effientNet 등등 경량화의 테크닉들이 점점 개발되었다.경량화에 레이어 테크닉이 개발되면 이
논문 레시피에 따르면 enas의 operation은 총 6개로 커널 크기가 3, 5인 conv, seperable conv 4개커널 크기가 3인 max, average pool 2개 해서 총 6개이다.따라서 구현할 브랜치는 총 6개의 경우의 수를 선택할 수 있게 한다.
초기화를 커스텀하기 위해서 다음과 같은 파일을 수정 논문 레시피에 따르면 초기화를 kaiming으로 해야한다. 파이토치에서 좋으면서 안 좋은점이 그냥 nn.Conv2d로 레이어를 만들어 주면 자동으로 가중치를 초기화 한다. 그러면 kaiming 초기화가 안되서 초기
주의 사항 이 글은 상당히 이론적인 글이 될 것이다. 아키텍처를 만드는 데 도움은 안되며 bottleNeck 구조의 이유에 대해서 이론적으로 다룰 글이니 넘겨도 된다. 이 글 쓴 이유 https://github.com/melodyguan/enas/blob/mast
앞서 설명했지만 압축해서 설명하자면 경로 1: 평균 풀링(average pooling)을 적용한 후, 1x1 필터 크기의 컨볼루션(conv2d)을 사용하여 필터 개수를 조정경로 2: 입력 이미지를 패딩한 후, 우측 하단으로 시프트하여 동일하게 평균 풀링을 적용하고, 1
구현체를 참고할 때 대부분 텐서플로를 사용해서 batchnorm을 구현하는 데 난 파이토치를 이용해서 구현할거다. batchNorm에 대한 자세한 내용은 각자 학습하길 바람image_ops란 파일을 만들어주고 batch_norm을 만들어주자.파이토치에서 제공하는 nn.
Enas 논문에선 나오진 않으나 논문 저자의 구현체 중 general child에 factorized reduction이란 게 있다. Learning Transferable Architectures for Scalable Image Recognition란 구글 브레인의
오늘 코드 역시 https://github.com/melodyguan/enas/blob/master/src/cifar10/general_child를 참고했다. 현재는 이걸 기본으로 거의 같게 구현하지만 나중에 enas + mnas + tunas 섞이면 바뀔 수
weight, bias 초기화 모델을 본격적으로 학습하는 코드를 만들기 전에 학습에 필요한 weight와 bias를 초기화하는 매서드를 만들자. 일전에 만들어 둔 common_ops란 파일에 만들 것 이다. He 초기화 가중치를 초기화하는 과정은 머신러닝의 학습에
with와 no_grad()는 효율적인 메모리 관리를 위해 준 것, with는 컨텍스트 관리, no_grad()는 그래디언트를 사용하지 않는다. 샘플링은 역전파과정이 없어서 그래디언트 없어도 됨anchors: 이전 레이어의 출력을 저장하는 리스트. 어텐션 계산 시 사용
build_sampler 이제 컨트롤러를 이용해 파라미터를 초기화하는 매서드를 만들었으니 이번에 레이어들을 샘플링해서 모델을 만드는 build_sampler()를 만들자. https://github.com/melodyguan/enas/blob/master/src/c
오늘은 심심하니 책이나 리뷰하면서 쉬는 시간을 가져보자뒤지게 어려운 책이다.내용은 아주 훌륭한 책이다사는 거 추천 다만 초보자는 처음부터 이해할려고 애쓰지 말 것머신러닝은 다양한 도메인에 접목 가능하고 사용하는 도구 또한 매우 다양하다수학, 통계학, 언어학, 심지어 물
강화학습을 기반으로 한 nas 알고리즘에선 컨트롤러가 대부분의 역할을 한다. 이번 시간에선 macro contoller를 이용해서 모델의 파라미터를 초기화하는 매서드를 만들어보자. 우선 컨트롤러에 필요한 걸 위와 같이 초기화 해주자. 많지만 포함되면 좋을걸 일단 위처
Mnas의 search space의 구조는 두 가지가 있다. macro search space, micro search space논문을 읽을 때 이 부분이 헷갈렸는데 그냥 위 2가지 방법으로 아키텍처를 만드는 것이다.Macro search space: 처음부터 끝까지
저번 시간에 구성한 mobileNetv3 search space를 확장성을 위해서 리팩터링하자.우선 위와 같은 search space를 만들어주고 위와 같은 아이템을 뽑는 클래스를 만들어주자
다수의 논문을 검토해본 결과 학습하는 데 매우 많은 시간과 자원이 드는것을 알 수 있었다. 따라서 일단 nas자체도 경량화를 하면서 mobileNetv3에서 사용되는 mnas와 결합하여 새로운 nas를 만들도록 하자.경량화의 경우 Enasreward의 경우 Mnas이