2017/04 5

머신러닝 모델 개발 삽질기

머신러닝 모델 개발 삽질 경험기 조대협 (http://bcho.tistory.com) 딥러닝을 공부하고 CNN 모델을 기반으로 무언가를 만들어보겠다는 생각에, 해외 유명 연예인 얼굴 사진을 가져다가 분류하는 얼굴 인식 모델을 만들어 보기로 하였다.아직도 진행중이지만, 많은 시행 착오를 겪었는데 같은 시행 착오를 겪지 않고 경험을 공유하기 위해서 겪었던 시행 착오들을 정리해 본다.학습 데이타 확보 및 분류먼저 학습용 데이타를 수집 하는 것이 가장 문제 였다. 인터넷에서 사진을 모아서 학습 데이타로 사용해도 되겠지만, 아무래도 저작권 및 초상권 문제가 있고, 일일이 사진을 하나씩 받아서 수집하거나 또는 별도의 수집기를 만드는 것도 부담이 되었다.그래서 찾은 것이 pubfig라는 셀럽 얼굴 데이타인데 http..

파이썬 전역 변수

파이썬에서 전역변수 사용하기 (2.7X 버전) 조대협 (http://bcho.tistory.com) 파이썬에서 전역 변수를 사용하려고 하니 "Unbound Local Error"가 나더라.파이썬은 로컬 변수를 자바처럼 쓸수가 없다. 잘못된 코드 global_value = 1 def myfunction(): global_value=global_value + 1 올바른 코드 global_value = 1 def myfunction(): global global_value global_value=global_value + 1 글로벌 변수로 쓰려면, 글로벌 변수를 쓰려는 곳에서 global 이라는 키워드로 선언을 해줘야 그 전역 변수를 불러다가 쓸 수 있다.

머신러닝 라벨 데이타 타입에 대해서

머신러닝 라벨 데이타 타입에 대해서 조대협 (http://bcho.tistory.com) 샘플로 만들고 있는 얼굴 인식 모델에서, 가독성을 높이기 위해서 학습데이타 라벨을 문자열을 썼다.예를 들어서 이미지가 있으면 그에 대한 라벨을 안젤리나졸리 와 같은 문자열을 사용했는데, CNN의 가장 마지막 레이어에서 Softmax 적용하고 나오는 결과가 숫자이기 때문에 문자열을 사용할 수 없다는 것은 알았지만, 그래도 가독성을 높이고, 나중에 문자열을 --> 숫자로 (파이썬 리스트를 사용할 요량으로) 코딩했었는데, 텐서플로우 코딩에서는 텐서 문자열을 가지고, 파이썬 리스트에서 index를 얻어올 수 없다. 예를 들어 label_index = ["안젤리아졸리","브레드 피트"] 라는 파이쎤 리스트형이 있을때 labe..

텐서플로우의 세션,그래프 그리고 함수의 개념

텐서플로우의 세션,그래프 그리고 함수의 개념 조대협 (http://bcho.tistory.com) 그래프와 세션에 대한 개념이 헷갈려서, 좋은 샘플이 하나 만들어져서 공유합니다.텐서 플로우의 기본 작동 원리는 세션 시작전에 그래프를 정의해놓고, 세션을 시작하면 그 그래프가 실행되는 원리인데, 그래서 이 개념이 일반적인 프로그래밍 개념과 상의하여 헷갈리는 경우가 많다 즉, 세션을 시작해놓고 함수를 호출하는 케이스들이 대표적인데http://bcho.tistory.com/1170 코드를 재 사용해서 이해해보도록 하자 이 코드를 보면, tt = time * 10 을 세션 시작전에 정의해놨는데, 이 코드를 함수로 바꾸면 아래와 같은 형태가 된다. 변경전 코드 def main(): print 'start sessi..

텐서플로우-배치 처리에 대해서 이해하자

텐서플로우 배치 처리 조대협 (http://bcho.tistory.com) 텐서플로우에서 파일에서 데이타를 읽은 후에, 배치처리로 placeholder에서 읽는 예제를 설명한다.텐서의 shape 의 차원과 세션의 실행 시점등이 헷갈려서 시행착오가 많았기 때문에 글로 정리해놓는다.큐와 파일처리에 대한 기본적인 내용은 아래글http://bcho.tistory.com/1163http://bcho.tistory.com/1165를 참고하기 바란다.데이타 포맷읽어 드릴 데이타 포맷은 다음과 같다. 비행기 노선 정보에 대한 데이타로 “년도,항공사 코드, 편명"을 기록한 CSV 파일이다.2014,VX,1212014,WN,18732014,WN,2787배치 처리 코드이 데이타를 텐서 플로우에서 읽어서 배치로 place h..