분류 전체보기 1274

머신러닝 이미지 데이타 뻥튀기 방법

머신러닝에서 학습용 데이타양 늘리기 머신러닝에 대해서 공부하다가 강연을 들은적이 있었는데, 그때 많이 들었던 이야기가 데이타 뻥튀기에 대한 이야기 였다.확보할 수 있는 원본 데이타의 양이 한정되어 있으니, 현재의 데이타를 가지고 그 양을 늘리는 방법인데. 어떻게 하나 사실 궁금했는데.(얼굴의 경우 선글라스를 씌우거나 기타의 방법을 생각했는데..) 오늘 튜토리얼을 보다보니, 구체적인 그 방법이 나와 있어서 잠깐 메모 해놓는다https://www.tensorflow.org/tutorials/deep_cnn 여기서 소개된 방법은이미지의 좌/우를 바꾼다거나, 이미지의 밝기나 선명도를 바꾸는 방법을 사용한다.

Bazel 빌드 툴에 대해서.

Bazel 빌드툴 Tensorflow Serving을 살펴보다보니, Serving Server는 C++기반에 gRPC 인터페이스 기반이라는 것을 알았는데,빌드 환경이 bazel이라는 것을 사용한다. 그래서 Bazel이 무엇인가 찾아봤는데. 쉽게 말하면 빌드 툴이다 위키에 설명이 가장 잘나와 있는데, 구글에서 만든 빌드 시스템으로, 구글의 경우 큰 소스코드를 빌드하기 때문에, 이를 위해서 만들어진 빌드 시스템을 오픈소스화 한것으로, 분산 빌드등을 제공하고 빠른 성능을 제공한다. 쉽게 말해서 make,ant,gradle,maven과 같은 빌드 시스템으로 보면 된다.Java,C,C++,Python,Object C등의 언어를 지원한다. https://en.wikipedia.org/wiki/Bazel_(softw..

텐서 보드를 이용하여 학습 과정을 시각화 해보자

텐서보드를 이용하여 학습 과정을 시각화 해보자 조대협 (http://bcho.tistory.com) 텐서플로우로 머신러닝 모델을 만들어서 학습해보면, 각 인자에 어떤 값들이 학습이 진행되면서 어떻게 변화하는지 모니터링 하기가 어렵다. 앞의 예제들에서는 보통 콘솔에 텍스트로 loss 값이나, accuracy 값을 찍어서, 학습 상황을 봤는데, 텐서보다는 학습에 사용되는 각종 지표들이 어떻게 변화하는지 손쉽게 시각화를 해준다. 예를 들어 보면 다음 그림은 학습을 할때 마다 loss 값이 어떻게 변하는지를 보여주는 그래프이다.가로축은 학습 횟수를 세로축은 모델의 loss 값을 나타낸다. 잘 보면 두개의 그래프가 그려져 있는 것을 볼 수 있는데, 1st 그래프는 첫번째 학습, 2nd 는 두번째 학습에서 추출한 ..

한시간에 만드는 대용량 로그수집 분석 시스템

한시간에 만드는 대용량 로그 수집 시스템조대협 (http://bcho.tistory.com) 정정 및 참고 내용2017.1.24 몇가지 내용을 정정합니다.https://cloud.google.com/logging/quota-policy 를 보면 스택드라이버 로깅에 쿼타 제한이 초당 500건/계정으로 잡혀있어서. 일반적인 경우는 최대 500 TPS의 성능을 낼 수 있습니다. 그 이상의 성능이 필요하면, 여러 계정을 사용해야 합니다 또는 구글에 별도의 쿼타 증설 요청을 해야 합니다.하루에, 최대 2천5백만건의 로그를 하나의 프로젝트를 통해서 수집이 가능합니다. 또한 프리티어의 경우에는 한달에 로그를 5GB 까지 수집이 가능한데, 이게 넘으면 로그가 더이상 수집되지 않습니다. 그래서 아래 내용 처럼 빅쿼리로 ..

딥러닝을 이용한 숫자 이미지 인식 #2/2-예측

딥러닝을 이용한 숫자 이미지 인식 #2/2 앞서 MNIST 데이타를 이용한 필기체 숫자를 인식하는 모델을 컨볼루셔널 네트워크 (CNN)을 이용하여 만들었다. 이번에는 이 모델을 이용해서 필기체 숫자 이미지를 인식하는 코드를 만들어 보자 조금 더 테스트를 쉽게 하기 위해서, 파이썬 주피터 노트북내에서 HTML 을 이용하여 마우스로 숫자를 그릴 수 있도록 하고, 그려진 이미지를 어떤 숫자인지 인식하도록 만들어 보겠다. 모델 로딩 먼저 앞의 예제에서 학습을한 모델을 로딩해보도록 하자.이 코드는 주피터 노트북에서 작성할때, 모델을 학습 시키는 코드 (http://bcho.tistory.com/1156) 와 별도의 새노트북에서 구현을 하도록 한다. 코드import tensorflow as tfimport nump..

딥러닝을 이용한 숫자 이미지 인식 #1/2-학습

딥러닝을 이용한 숫자 이미지 인식 #1/2 조대협 (http://bcho.tistory.com) 지난 글(http://bcho.tistory.com/1154 ) 을 통해서 소프트맥스 회귀를 통해서, 숫자를 인식하는 모델을 만들어서 학습 시켜 봤다.이번글에서는 소프트맥스보다 정확성이 높은 컨볼루셔널 네트워크를 이용해서 숫자 이미지를 인식하는 모델을 만들어 보겠다. 이 글의 목적은 CNN 자체의 설명이나, 수학적 이론에 대한 이해가 목적이 아니다. 최소한의 수학적 지식만 가지고, CNN 네트워크 모델을 텐서플로우로 구현하는데에 그 목적을 둔다. CNN을 이해하기 위해서는 Softmax 등의 함수를 이해하는게 좋기 때문에 가급적이면 http://bcho.tistory.com/1154 예제를 먼저 보고 이 문서..

2016년 업무 종료....

2016년 12월29일 목요일로 2016년 업무 종료.. 스타트업 기술 임원도 해보고, 패스트 캠퍼스에서 강의도 아키텍쳐 강의도 하고, 애자일 컨설팅, 대용량 서비스 아키텍쳐 컨설팅...그리고 구글에 들어와서 천재들도 많이 만나고, 빅데이타 분석 영역도 시작하고, 머신러닝도 시작하고... 정말 다사다난한 한해였다. 많은 경험과 특히나 고민이 많은 해였고... 아직도 부족한게 많은 것을 깨달은 한해였다.몇일간 짧은 휴가지만 앞으로의 계획도 세우고.. 내년에는 머신러닝쪽에 집중도 하고... 조금 더 많은 일을 잘 할 수 있는 한해이기를 바라며가족들 건강하고 내년에는 부디 좋은일만 생겨서 행복한 한해가 되었으면 좋겠다.

사는 이야기 2016.12.29

텐서플로우 #3-숫자를 인식하는 모델을 만들어보자

텐서플로우로 모델을 만들어보자Softmax를 이용한 숫자 인식조대협 (http://bcho.tistory.com) 텐서플로우와 머신러닝에 대한 개념에 대해서 대략적으로 이해 했으면 간단한 코드를 한번 짜보자. MNIST그러면 이제 실제로 텐서플로우로 모델을 만들어서 학습을 시켜보자. 예제에 사용할 시나리오는 MNIST (Mixed National Institute of Standards and Technology database) 라는 데이타로, 손으로 쓴 숫자이다. 이 손으로 쓴 숫자 이미지를 0~9 사이의 숫자로 인식하는 예제이다. 이 예제는 텐서플로우 MNIST 튜토리얼 (https://www.tensorflow.org/tutorials/mnist/beginners/) 을 기반으로 작성하였는데, 설..

텐서플로우 #2 - 행렬과 텐서플로우

텐서플로우 #2 - 행렬과 텐서플로우 조대협 (http://bcho.tistory.com) 머신러닝은 거의 모든 연산을 행렬을 활용한다. 텐서플로우도 이 행렬을 기반으로 하고, 이 행렬의 차원을 shape 라는 개념으로 표현하는데, 행렬에 대한 기본적이 개념이 없으면 헷갈리기 좋다. 그래서 이 글에서는 간략하게 행렬의 기본 개념과 텐서플로우내에서 표현 방법에 대해서 알아보도록 한다. 행렬의 기본 개념 훝어보기행과 열행렬의 가장 기본 개념은 행렬이다. mxn 행렬이 있을때, m은 행, n은 열을 나타내며, 행은 세로의 줄수, 열은 가로줄 수 를 나타낸다. 아래는 3x4 (3행4열) 행렬이다. 곱셈 곱셈은 앞의 행렬에서 행과, 뒤의 행렬의 열을 순차적으로 곱해준다.아래 그림을 보면 쉽게 이해가 될것이다. 이..

구글 빅쿼리 사용시 count(distinct)의 값이 정확하지 않은 문제

구글 빅쿼리 사용시 count(distinct)의 값이 정확하지 않은 문제 조대협 (http://bcho.tistory.com) 빅쿼리에서 count(distinct) 문을 사용하면, 종종 값이 부 정확하게 나오는 경우가 있다.예를 들어서 아래의 두 쿼리는 같은 결과가 나와야 하는데, 아래 count(distinct id)를 쓴 쿼리는 다른 값을 리턴한다.select count(*)where id="mykey"from mytable select count(distinct id)where id="mykey"from mytable 빅쿼리에는 쿼리가 빅쿼리에 최적화된 SQL과 유사한 Legacy SQL 쿼리가 있고, ANSI SQL을 따르는 스탠다드 쿼리가 있다. Legacy SQL 쿼리의 경우 확인해보니, ..