전체 글 1274

오토인코더를 이용한 비정상 거래 검출 모델의 구현 #4 - 오토인코더 기반의 신용카드 이상거래 검출코드와 분석 결과

오토인코더를 이용한 비정상 거래 검출 모델 구현 #4신용카드 이상 거래 감지 코드 조대협 (http://bcho.tistory.com) 구현코드 전체 모델 코드는 https://github.com/bwcho75/tensorflowML/blob/master/autoencoder/creditcard_fraud_detection/3.model.ipynb 에 있다. 코드는 http://bcho.tistory.com/1198 에 설명한 MNIST 데이타를 이용한 오토인코더 모델과 다르지 않다. 차이는 데이타 피딩을 784개의 피쳐에서 28개의 피쳐로만 변환하였고, 데이타를 MNIST 데이타셋에서 CSV에서 읽는 부분만 변경이 되었기 때문에 쉽게 이해할 수 있으리라 본다. 학습 및 예측 결과모델을 만들고 학습을 한..

파이썬을 이용한 데이타 시각화 #1 - Matplotlib 기본 그래프 그리기

파이썬을 이용한 데이타 시각화 #1 - Matplotlib 기본 그래프 그리기 조대협 (http://bcho.tistory.com) 백앤드 엔지니어와 백그라운드를 가진 경험상, 머신러닝을 공부하면서 헷갈렸던 부분중 하나가, 데이타에 대한 시각화이다. 머신러닝은 모델을 구현하는 것도 중요하지만, 학습할 데이타를 선별하고, 만들어진 모델을 검증하기 위해서는 데이타를 이해하는 것이 필수적이고 이를 위해서는 데이타를 시각화 해서 보는 것이 매우 중요하다. 그동안 그래프를 그리는 것을 스택오버플로우등에서 찾아서 복붙을 해서 사용하다가 matplotlib를 정리해야겠다고 해서 메뉴얼을 봤지만 도무지 이해가 되지 않아서, 결국 온라인 강좌를 들어서 정리해봤는데, 역시 강좌를 들으니까는 훨씬 빠르게 이해가 된다.참고한..

오토인코더를 이용한 비정상 거래 검출 모델의 구현 #3 - 데이타 전처리

오토 인코더를 이용한 신용카드 비정상 거래 검출 #3 학습 데이타 전처리 조대협 (http://bcho.tistory.com) 앞의 글들 (http://bcho.tistory.com/1198 http://bcho.tistory.com/1197 ) 에서 신용카드 이상 검출을 하기 위한 데이타에 대한 분석과, 오토 인코더에 대한 기본 원리 그리고 오토 인코더에 대한 샘플 코드를 살펴보았다. 이제 실제 모델을 만들기에 앞서 신용카드 거래 데이타를 학습에 적절하도록 전처리를 하도록한다.데이타양이 그리 크지 않기 때문에, 데이타 전처리는 파이썬 데이타 라이브러리인 pandas dataframe을 사용하였다. 여기서 사용된 전처리 코드는 https://github.com/bwcho75/tensorflowML/blo..

지난 1년 회고

구글 입사한지 대략 1년6개월 정도 지남기술적으로는 그동안 애매했던 빅데이타 분석에 대한 기술과 어느정도 인사이트를 가지게 되었고 머신러닝에 대한 전반적인 이해와 딥러닝 기술에 대한 이해와 기본적인 구현능력을 가지게 되었음영어는 쬐끔 늘어난거 같으나 큰 발전은 없고 크게 봤을때, 집에 일찍 들어오기 때문에, 애들과 보내는 시간이 압도적으로 늘어난 반면 공부에 투자하는 시간은 상대적으로 줄었음.돌이켜 보면 1년반이면 길다면 길고 짧다면 짧은 시간인데, 기술적으로 어느정도 발전이 있었음.2017이 엊그제 같은데 벌써 3분기를 달리고 있는데. 연말에 정리는 어떻게 될련지 궁금하다. 남은건 딥러닝 기술을 더 발전 시키는것 이외에, 데이타 시각화 및 분석 능력을 가지는게 단기적인 목표 9월 20일 생각 로그

사는 이야기 2017.09.20

오토인코더를 이용한 비정상 거래 검출 모델의 구현 #2 - MNIST 오토 인코더 샘플

오토인코더를 이용한 비정상 거래 검출 모델의 구현 #2MNIST 오토인코더 샘플 조대협 (http://bcho.tistory.com) 신용카드 이상 거래 감지 시스템 구현에 앞서서, 먼저 오토인코더에 대한 이해를 하기 위해서 오토 인코더를 구현해보자. 오토 인코더 샘플 구현은 MNIST 데이타를 이용하여 학습하고 복원하는 코드를 만들어 보겠다. 이 코드의 원본은 Etsuji Nakai 님의 https://github.com/enakai00/autoencoder_example 코드를 사용하였다. 데이타 전처리이 예제에서는 텐서플로우에 포함된 MNIST 데이타 tensorflow.contrib.learn.python.learn.datasets 를 tfrecord 로 변경해서 사용한다.TFRecord에 대한 ..

오토 인코더를 이용한 비정상 거래 검출 모델의 구현 #1

오토인코더를 이용한 비정상 거래 검출 모델의 구현 #1신용카드 거래 데이타 분석 조대협 (http://bcho.tistory.com) 이미지 인식 모델은 만들어봤고, 아무래도 실제로 짜봐야 하는지라 좋은 시나리오를 고민하고 있는데, 추천 시스템도 좋지만, 이상 거래 감지에 대해 접할 기회가 있어서 이상 거래 감지 (Fraud Detection System) 시스템을 만들어 보기로 하였다 데이타셋샘플 데이타를 구해야 하는데, 마침 kaggle.com 에 크레딧 카드 이상거래 감지용 데이타가 있었다.https://www.kaggle.com/dalpozz/creditcardfraud 에서 데이타를 다운 받을 수 있다. CSV 형태로 되어 있으며, 2013년 유럽 카드사의 실 데이타 이다. 2일간의 데이타 이고..

텐서플로우 하이레벨 API를 Estimator를 이용한 모델 정의 방법

텐서플로우 하이레벨 API Estimator를 이용한 모델 정의 방법 조대협 (http://bcho.tistory.com) 텐서플로우의 하이레벨 API를 이용하기 위해서는 Estimator 를 사용하는데, Estimator 는 Predefined model 도 있지만, 직접 모델을 구현할 수 있다. 하이레벨 API와 Estimator에 대한 설명은 http://bcho.tistory.com/1195 글을 참고하기 바란다. 이 문서는 Custom Estimator를 이용하여 Estimator를 구현하는 방법에 대해서 설명하고 있으며, 대부분 https://www.tensorflow.org/extend/estimators 의 내용을 참고하여 작성하였다.Custom EstimatorEstimator의 스켈레톤..

텐서플로우 하이레벨 API

텐서플로우 하이레벨 API에 대한 이해 머신러닝을 공부하고 구현하다 보니, 모델 개발은 새로운 모델이나 알고리즘을 개발하는 일 보다는, 기존의 알고리즘을 습득해서 내 데이타 모델에 맞도록 포팅하고, 학습 시키는 것이 주된 일이 되고, 오히려, 모델 보다는 데이타에 대한 이해와 전처리에 많은 시간이 소요되었다. 특히 여러번 실험을 하면서 패러미터를 조정하고 피쳐등을 조정하기 위해서는 많은 실험을 할 수 있어야 하는데, 이러기 위해서는 실험(학습)시간이 짧아야 한다. 이를 위해서는 모델 개발 보다 분산 러닝을 하기 위한 코드 변경 작업등이 많이 소요된다. 결론을 요약하자면, 실제로 알고리즘을 개발하는 데이타 과학자가 아니라, 머신러닝을 활용만 하는 프랙티셔너 입장이라면, 모델을 개발하는 것 보다는 있는 모델..

Tensorflow Object Detection API를 이용한 물체 인식 #3-얼굴은 학습시켜보자

Object Detection API를 이용하여 커스텀 데이타 학습하기얼굴인식 모델 만들기 조대협 (http://bcho.tistory.com) 이번글에서는 Tensorflow Object Detection API를 이용하여 직접 이미지를 인식할 수 있는 방법에 대해서 알아보자. 이미 가지고 있는 데이타를 가지고 다양한 상품에 대한 인식이나, 사람 얼굴에 대한 인식 모델을 머신러닝에 대한 전문적인 지식 없이도 손쉽게 만들 수 있다. Object Detection API 설치Object Detection API 설치는 http://bcho.tistory.com/1193 와 http://bcho.tistory.com/1192 에서 이미 다뤘기 때문에 별도로 언급하지 않는다.학습용 데이타 데이타 생성 및 준비..

Tensorflow Object Detection API를 이용한 물체 인식 #2-동물 사진을 학습 시켜보자

Object Detection API에 애완동물 사진을 학습 시켜 보자 조대협 (http://bcho.tistory.com) Object Detection API에 이번에는 애완동물 사진 데이타를 학습시켜 보도록 한다.애완 동물 학습 데이타의 원본은 Oxford-IIIT Pets lives 로 http://www.robots.ox.ac.uk/~vgg/data/pets/ 에 있다. 약 37개의 클래스에, 클래스당 200개 정도의 이미지를 가지고 있다. 이번 글에서는 이 애완동물 데이타를 다운 받아서, Object Detection API에 학습 시키는 것까지 진행을 한다.데이타를 다운로드 받은 후, Object Detection API에 학습 시키기 위해서, 데이타 포맷을 TFRecord 형태로 변환한 후..

Tensorflow Object Detection API를 이용한 물체 인식 #1-설치와 사용하기

Tensorflow Object Detection API 조대협 ( http://bcho.tistory.com) Tensorflow Object Detection API는, Tensorflow 를 이용하여 이미지를 인식할 수 있도록 개발된 모델로, 라이브러리 형태로 제공되며, 각기 다른 정확도와 속도를 가지고 있는 5개의 모델을 제공한다. 머신러닝이나 텐서플로우에 대한 개념이 거의 없더라도 라이브러리 형태로 손쉽게 사용할 수 있으며, 직접 사용자 데이타를 업로드해서 학습을 하여, 내 시나리오에 맞는 Object Detection System을 손쉽게 만들 수 있다. Object Detection API를 설치하기 위해서는 텐서플로우 1.x 와 파이썬 2.7x 버전이 사전 설치되어 있어야 한다. 이 글에서..

얼굴 인식 모델을 만들어보자 #6 - CloudML을 이용하여 예측하기

CloudML을 이용하여 예측하기조대협 (http://bcho.tistory.com) 지난글 (http://bcho.tistory.com/1189) 에서 학습된 모델을 *.pb 파일 포맷으로 Export 하였다. 그러면 이 Export 된 모델을 이용하여 예측 (prediction)을 하는 방법에 대해서 알아보겠다. 앞글에서도 언급했듯이, 예측은 Google CloudML을 이용한다.전체 코드를 https://github.com/bwcho75/facerecognition/blob/master/CloudML%20Version/face_recog_model/%2528wwoo%2529%2BML%2BEngine%2Bprediction.ipynb 를 참고하기 바란다. Export된 모델을 CloudML에 배포하기..

텐서플로우 트레이닝 데이타 포맷인 *.tfrecord 파일 읽고 쓰기

TFRecord 조대협 (http://bcho.tistory.com) 텐서플로우를 접하게 다 보면 필히 만나는 부분이 텐서플로우 학습 데이타 포맷인 TFRecord라는 파일 포맷이다. 마침 얼굴 인식 모델을 이번에는 텐서플로우에서 미리 개발되어 제공되는 물체 인식 API인 Tensorflow Object Detection API를 사용해서 얼굴을 학습시켜보려고 하니 데이타 포맷을 TFRecord 포맷으로 변경해야 한다. 그래서, TFRecord 파일을 만들어보고, 테스트를 위해서 데이타 내용도 직접 읽는 코드를 작성해보았다. (전체 코드는 https://github.com/bwcho75/objectdetection/tree/master/tfrecord 에 다.)TFRecord 파일 포맷이란TFRecord..

얼굴 인식 모델을 만들어보자 #5-학습된 모델을 Export 하기

얼굴 인식 모델을 만들어보자 #5 학습된 모델을 Export 하기 조대협 (http://bcho.tistory.com) 앞의 글에서 CloudML을 이용하여 학습하는 부분까지 끝냈다. 그렇다면 학습된 모델을 이용하여 실제로 예측은 어떻게 할것인가? 여기에는 두가지 선택지가 있다. 첫번째는, 체크포인트로 저장된 파일을 이용하는 방식인데, 체크포인트에는 저장된 데이타는 텐서플로우 모델 그래프는 없고, 모델에서 사용된 변수 (Weight,bias etc) 만 저장하기 때문에, 이 데이타를 로딩하려면 텐서플로우 코드로 그래프를 그려준 다음에, 로딩을 해야한다. (상세 설명 http://bcho.tistory.com/1179 ) 두번째는, 체크포인트처럼 변수만 저장하는 것이 아니라, 그래프를 함께 저장하는 방식으..

Wide and deep network 모델 활용하기

Wide & deep model 알아보기 조대협 (http://bcho.tistory.com)Wide & deep model 이글에 설명된 예제는 https://www.tensorflow.org/tutorials/wide_and_deep 문서에 있는 코드를 활용하였습니다. 음식 검색 키워드와 검색 결과를 학습 시킨 후에 이 결과를 기반으로 사용자에게 음식을 추천해주는 서비스가 있다고 하자.Monetization and Wide model (기억과 와이드 모델)로지스틱 회귀 모델을 이용하여 추천 알고리즘을 작성하여 학습을 시킨 경우, 학습 데이타를 기반으로 상세화된 예측 결과를 리턴해준다. 예를 들어 검색 키워드 (프라이드 치킨)으로 검색한 사용자가 (치킨과 와플)을 주문한 기록이 많았다면, 이 모델은 (..

구글 클라우드 서버의 HTTP 포트를 SSH 로 터널링해서 로컬에서 접속하기

구글 클라우드 서버의 HTTP 포트를 SSH 로 터널링해서 로컬에서 접속하기 조대협 (http://bcho.tistory.com) 구글 클라우드 VM에 서버를 설치한 후 웹을 접근하고자 할때, 설치한 애플리케이션이 ACL (접근 제어) 처리가 안되어 있는 애플리케이션이 있을 수 있다. 특히 관리자 콘솔 같은 경우에 이런 경우가 많은데, 아파치 에어플로우 역시도 설치 후에 웹 서버를 띄우면 포트가 모두 퍼블릭으로 오픈되기 때문에 관리자만 액세스가 가능하도록 ACL 처리를 할 필요가 있다. 이를 위한 방법으로는 몇가지가 있는데 방화벽으로 특정 포트만 허용 하는 방법앞에 nginx나 apache를 넣어서 HTTP BASIC AUTH등 인증 방식을 추가하는 방법Google Cloud Identity Aware ..

데이타 워크플로우 관리를 위한 Apache Airflow #1 - 소개

Apache airflow 조대협 (http://bcho.tistory.com)배경빅데이타 분석이나, 머신러닝 코드를 만들다 보면 필요한것중에 하나가 여러개의 태스크를 연결해서 수행해야 할 경우가 있다. 데이타 베이스의 ETL 작업과 비슷한 흐름이라고 보면 된다. 예를 들어 머신러닝의 학습 과정을 보면 데이타 전처리,학습,배포,예측과 같은 단계를 가지게 된다. rawdata를 읽어서 preprocessing 단계를 거쳐서 학습에 적절한 training data로 변경하고,변경된 training data를 가지고 머신러닝 모델을 학습한후, 학습된 모델을 저장한다.학습된 모델을 가지고 예측을 해서 결과를 저장한다. 이렇게 머신러닝은 여러개의 단계를 거쳐서 수행이 되는데, 각 단계가 끝나면 다음 단계를 수행해..

텐서플로우에서 모델 export시 그래프를 다시 그리는 이유

텐서플로우에서 checkpoint와 saved model의 차이와 모델을 export할때 그래프를 다시 그리는 이유 조대협 (http://bcho.tistory.com) Check point vs Saved model 텐서플로우 튜토리얼들을 보면 모델을 저장하고 리스토어 하는데, check point를 사용하도록 가이드하고 있다.그런데, Tensorflow Serving이나 CloudML등에 학습된 모델을 올려서 inference를 하고자 할때는 check point 파일을 사용하지 않고, 별도로 모델을 Saved model로 export하여 사용한다. 그렇다면 check-point와 saved model의 차이가 무엇일까? check-point를 학습을 하다가 학습 내용을 중간에 저장하고 나중에 학습을..

구글 프로토콜 버퍼 (Protocol buffer)

구글 프로토콜 버퍼조대협 (http://bcho.tistory.com) 텐서 플로우로 모델을 개발하다가 학습이 끝난 모델을 저장하여, 예측하는 데 사용하려고 하니, 모델을 저장하는 부분이 꽤나 복잡하여 찾아보니, 텐서플로우는 파일 저장 포맷을 프로토콜 버퍼를 사용한다는 것을 알았다. 그래서, 오래전에 살펴보았던 프로토콜 버퍼를 다시 살펴보았다.개요 및 특징프로토토콜 버퍼는 구글에서 개발하고 오픈소스로 공개한, 직렬화 데이타 구조 (Serialized Data Structure)이다. C++,C#, Go, Java, Python, Object C, Javascript, Ruby 등 다양한 언어를 지원하며 특히 직렬화 속도가 빠르고 직렬화된 파일의 크기도 작아서 Apache Avro 파일 포맷과 함께 많이 ..

프로그래밍 2017.06.25

텐서플로우에서 array index를 문자열로 변환하는 방법

텐서플로우에서 array index를 문자열로 변환하는 방법 조대협 (http://bcho.tistory.com) 예전에, 얼굴 인식 모델을 만들때, 라벨 숫자로 하지 않고 사람 이름 문자열로 했다가 이 문자열의 배열 인덱스를 구하는 것을 구현하지 못해서 라벨을 다시 숫자로 데이타를 재생성한 적이 있었다. 텐서플로우에서 텐서는 파이썬의 일반 자료형이 아니기 때문에, 파이썬의 배열등을 사용하지 못해서 생기는 문제였는데, 포기하고 있다가 다른 코드를 보던중에, 이 부분을 해결해주는 코드를 찾아서, 정리해놓는다. tf.contrib.lookup 에 이를 지원하기 위한 함수들이 정의되어 있다.https://www.tensorflow.org/api_docs/python/tf/contrib/lookup 배열 인덱스..

얼굴 인식 모델을 만들어보자 #4 -클라우드를 이용하여 학습 시키기

얼굴 인식 모델을 만들어보자 #4 클라우드를 이용하여 학습 시키기(머신러닝 학습 및 예측 시스템의 운영환경화) 조대협 (http://bcho.tistory.com) 앞에서 모델을 만들고 학습도 다했다. 이제, 이 모델을 실제 운영 환경에서 운영할 수 있는 스케일로 포팅을 하고자 한다. 로컬 환경 대비 실제 운영 환경으로 확장할때 고려해야 하는 사항은 대규모 학습 데이타를 저장할 수 있는 공간대규모 학습 데이타를 전처리하기 위한 병렬 처리 환경 이 내용은 이미 http://bcho.tistory.com/1177에서 다루었다. 대규모 학습 데이타를 빠르게 학습 시킬 수 있는 컴퓨팅 파워학습된 데이타를 이용한 대규모 예측 서비스를 할 수 있는 기능 위의 요건을 만족하면서 텐서플로우로 환경을 올리는 방법은 여러..

얼굴 인식 모델을 만들어보자 #3 - 학습된 모델로 예측하기

얼굴 인식 모델을 만들어보자 #3 - 학습된 모델로 예측하기 조대협 (http://bcho.tistory.com) 앞글에 걸쳐서 얼굴 인식을 위한 데이타를 수집 및 정재하고, 이를 기반으로 얼굴 인식 모델을 학습 시켰다. http://bcho.tistory.com/1178 얼굴인식 모델 개발 및 학습 시키기http://bcho.tistory.com/1176 학습 데이타 준비하고 이번글에서는 학습이 된 데이타를 가지고, 사진을 넣어서 실제로 인식하는 코드를 만들어보자전체 소스 코드는 https://github.com/bwcho75/facerecognition/blob/master/2.%2BFace%2BRecognition%2BPrediction%2BTest.ipynb 와 같다.모델 로딩 하기 모델 학습에 ..

연예인 얼굴 인식 모델을 만들어보자 - #2. CNN 모델을 만들고 학습시켜 보자

연예인 얼굴 인식 모델을 만들어보자 #2 CNN 모델을 만들고 학습 시켜보기 조대협 (http://bcho.tistroy.com)선행 학습 자료 이 글은 딥러닝 컨볼루셔널 네트워크 (이하 CNN)을 이용하여 사람의 얼굴을 인식하는 모델을 만드는 튜토리얼이다. 이 글을 이해하기 위해서는 머신러닝과 컨볼루셔널 네트워크등에 대한 사전 지식이 필요한데, 사전 지식이 부족한 사람은 아래 글을 먼저 읽어보기를 추천한다. 머신러닝의 개요 http://bcho.tistory.com/1140 머신러닝의 기본 원리는 http://bcho.tistory.com/1139 이산 분류의 원리에 대해서는 http://bcho.tistory.com/1142 인공 신경망에 대한 개념은 http://bcho.tistory.com/114..

머신러닝 시스템 프로세스와 아키텍쳐

Machine Learning Pipeline 조대협 (http://bcho.tistory.com)대부분 모델 개발과 알고리즘에 집중머신러닝을 공부하고 나서는 주로 통계학이나, 모델 자체에 많은 공부를 하는 노력을 드렸었다. 선형대수나 미적분 그리고 방정식에 까지 기본으로 돌아가려고 노력을 했었고, 그 중간에 많은 한계에도 부딪혔지만, 김성훈 교수님의 모두를 위한 딥러닝 강의를 접하고 나서, 수학적인 지식도 중요하지만 수학적인 깊은 지식이 없어도 모델 자체를 이해하고 근래에 발전된 머신러닝 개발 프레임웍을 이용하면 모델 개발이 가능하다는 것을 깨달았다. 계속해서 모델을 공부하고, 머신러닝을 공부하는 분들을 관심있게 지켜보고 실제 머신러닝을 사용하는 업무들을 살펴보니 재미있는 점이 모두 모델 자체 개발에만..

연예인 얼굴 인식 모델을 만들어보자 - #1. 학습 데이타 준비하기

연예인 얼굴 인식 서비스를 만들어보자 #1 - 데이타 준비하기 CNN 에 대한 이론 공부와 텐서 플로우에 대한 기본 이해를 끝내서 실제로 모델을 만들어보기로 하였다.CNN을 이용한 이미지 인식중 대중적인 주제로 얼굴 인식 (Face recognition)을 주제로 잡아서, 이 모델을 만들기로 하고 아직 실력이 미흡하여 호주팀에서 일하고 있는 동료인 Win woo 라는 동료에게 모델과 튜토리얼 개발을 부탁하였다. 이제 부터 연재하는 연예인 얼굴 인식 서비스는 Win woo 가 만든 코드를 기반으로 하여 설명한다. (코드 원본 주소 : https://github.com/wwoo/tf_face ) 얼굴 데이타를 구할 수 있는곳먼저 얼굴 인식 모델을 만들려면, 학습을 시킬 충분한 데이타가 있어야 한다. 사람 얼..

얼굴 인식 모델 - 학습용 데이타 처리에 대해서

얼굴 인식 모델을 CNN 네트워크를 이용하여 학습을 시키고 있는데, 지금까지 최대 정확도가 60% 정도밖에 나오지 않는다.오히려 dropout을 0.5 비율로 적용했더니, 정확도가 30% 정도로 떨어져 버렸다. 원인을 찾던중에 네트워크보다는 학습 데이타에 문제가 있을 것으로 추정된다.학습 데이타의 양이 그리 많지 않은데 (4 클래스, 사람당 120장), 데이타가 깔끔하지 않다.아래와 같은 데이타가 문제가 되는데회전각이 너무 큰경우선글라스를 쓴 경우화장이나 염색사진이 그레이 스케일 처리가 되어 있거나 특정 색상이 들어간경우 그래서 데이타 클랜징 모듈에서 구글 클라우드 비젼 API를 이용하여 회전각이 20도 가 넘은 경우 제외하고, 라벨 인식을 이용하여 선글라스가 있을 경우도 데이타에서 제외했다. 다음은 학..

머신러닝 모델 개발 삽질기

머신러닝 모델 개발 삽질 경험기 조대협 (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..