2017/06 7

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