Attibution Method에 대하여

딥러닝 모델이 어느 부분을 보고 판단하는지 알 수 있는 Attribution Method에 대한 포스팅입니다. 영국의 Odin-Vision이라는 회사의 기술을 연구하다가 알게된 내용들 입니다. 급하게 작성하느라 제대로 정리되지 않았습니다 ㅠㅠ Attribution Methods란? Attribution Methods (AMs)는 CNN기반의 모델 예측에 기여하는 요소들을 수치화(스칼라화)해 설명력을 높이기 위한 작업입니다. 이를 다음과 같이 분류할 수 있습니다. AM의 접근 방식 input의 feature에 따라: initial input이 output에 미치는 영향을 탐구 모델의 구성 요소 (ex. 특정 레이어)에 따라: 특정 layer의 activation을 탐구 AM의 attribution 추출 방..

python natsort로 파일을 "이름 순으로" 정렬해보자

python으로 데이터를 다룰 때 파일 경로의 리스트를 읽어오는 불러오는 경우가 많습니다. 저는 파일 이름을 순서대로 정렬해 가져와야 했습니다. 이 단순한 작업이 겉으로는 쉬워 보이지만, 처음에는 많이 헤매었습니다. 그래서 해결방법을 공유하고자 합니다. 시간이 없으신 분들은 가장 아래 코드만 보시면 됩니다. 파일 경로를 리스트로 받아올 때 문제점 예시 폴더에 1부터 22까지 번호가 매겨진 jpg 파일을 넣어놓았습니다. data - 1.jpg - 2.jpg - 3.jpg ... - 20.jpg - 21.jpg - 22.jpg python 내에서 이 파일들의 경로를 순차적으로 가져오기위해 os.listdir를 이용해봅니다. import os a = os.listdir('data') print(sorted(a..

python split-folders로 이미지 데이터 분리하기 (train/val/test)

이미지 데이터셋은 보통 한 폴더 안에 몽땅 담겨 있습니다. 딥러닝 네트워크를 학습하고 평가 및 검증하기 위해선 이 데이터를 분리해야 하는데요. 그럴 때 유용한 python 라이브러리가 있습니다. 바로 split-folders입니다. pip install split-folders pip install split-folders[full] # progress bar를 보고 싶을때 사용법은 간단합니다. split-folders를 적용하기전 데이터의 디렉터리 구조는 다음과 같아야 합니다. input/ class1/ img1.jpg img2.jpg ... class2/ imgWhatever.jpg ... ... split-folders에는 데이터를 나누기 위한 방법이 두 가지 있습니다. 1. 비율로 나누기 impo..

TPOT을 이용한 머신러닝 자동화 (AutoML with python), 파라미터 튜닝까지

최근 들어 automl 패키지를 사용해보면서 편리함을 많이 느끼고 있습니다. tpot, autokeras, auto-sklearn, nni 등 다양한 automl 패키지들이 개발되고 있는데요. 본 게시물에서는 github star 기준으로 3위에 머무르고 있는 TPOT에 대해서 적어보고자 합니다. TPOT 소개 TPOT은 딥러닝 모델보단 트리 기반 모델 혹은 회귀 모델에 특화되어있습니다. 물론 특정 configuration을 지정해줌으로써 딥러닝 학습도 가능합니다. Windows 운영체제에서 사용할 수 있는 가장 간단하고 성능 좋은 automl 패키지라고 생각합니다. TPOT은 수천개에 달하는 pipeline을 탐색해서 최적의 성능을 내는 모델을 찾습니다. 심지어 최적의 모델을 짤 수 있는 코드도 짜줍니..

pandas dataframe에서 apply의 진척도 보기 (progress_apply())

저는 코딩할 때 웬만하면 tqdm 패키지로 진척도를 확인합니다. 그래야 마음이 편하거든요.😁 dataframe을 다루다 보면 전처리를 할 때 시간이 오래 걸리는 경우가 있습니다. 저는 apply 메소드를 자주 쓰는 편인데 그때마다 진척도가 보이지 않아 한없이 기다려야 했죠. 그러다 언젠가 해결방법을 찾았습니다. 사용법도 너무 쉬워서 앞으로는 자주 쓰게 될 것 같아요. 바로 tqdm을 이용해 apply의 progress bar가 보이게 설정할 수 있었습니다! 우선 필요한 패키지를 import 합니다. import pandas as pd from tqdm import tqdm tqdm.pandas() # tqdm의 pandas전용 메소드를 호출합니다. 저는 제가 가지고 있는 뉴스 데이터를 활용해보겠습니다. ..

python numpy - argsort() 정렬 전 인덱스 활용하기

파이썬으로 데이터를 다룰 때에 가장 많이 쓰는 패키지중 하나인 numpy에는 argsort()라는 유용한 메소드가 있습니다. argsort()는 아래와 같이 정렬되기 전의 인덱스를 리스트 형태로 반환합니다. import numpy as np array1 = np.array([1,0,9,3]) sort_indice = np.argsort(array1) print(sort_indice) 출력값 >>[1,0,3,2] 이를 이용해 데이터베이스에서 가져온 서로 다른 테이블의 값을 정렬할 수 있습니다. ndarray의 특성상 서로 다른 타입의 변수들은 하나의 array에 담지 못하기 때문에, 따로 불러온뒤 정렬을 해야합니다. name_array = np.array(['동혁', '유리', '진우', '태연', '동준..