MNIST 55

2-4 텐서플로우 전문가용 예제 “GAN” 해설

Deep Convolutional Generative Adversarial Network https://www.tensorflow.org/tutorials/generative/dcgan Deep Convolutional 레이어는 입력이미지를 선형적으로 연결된 Convolutional 레이어 구조를 사용 필터링하여 특징을 추출해내는 뉴럴 네트워크이다. 전체 코드 구성에서 학습을 위해 Convolutional 레이어들을 사용하기 때문에 이 전문가용 예제를 익히기 위해서는 CNN에 대한 기본적인 이해를 가지고 있어야 함에 유의하자. 한편 GAN이란 Generative Adversarial Network 의 약어로서 번역하기가 쉽지 않은 듯하다. Generative 란 무엇인가로부터 생성한다는 의미이다. 그 무..

2-3 Fashion MNIST 텐서플로우 예제 “Your first neural network” 해설

2020년 구글 TensorFlow 홈페이지에서 제공하는 첫 번째 예제 바로 밑에 선보이는 Fashion MNIST 코드 해설에 주목하자. 비록 MNIST 수준의 초보자를 위한 기초적인 코드 예제이긴 하지만 그래도 웬만한 입문자에게는 쉽사리 넘을 수 없는 벽이라는 느낌을 지울 수 없어 보이므로 보다 더 쉬운 해설..

2-18 Fashion MNIST 텐서플로우 머신 러닝 Simple 네트워크 예제

2017년 구글 텐서플로우 홈페이지 머신 러닝 예제로는 MNIST 손글씨 문제였으며 2018년에는 Iris flowers 데이터 문제가 게재되었었다. 2020년 현재에도 구글 텐서플로우 홈페이지 야기 저기에 그 흔적들이 남아있지만 Keras 중심으로 업그레이드가 진행되면서 다양한 예제들을 선보이고 있다. 비록 beginner 즉 초보자를 위한 예제라고는 하나 실제로 다루어 보면 어느 주제 하나라도 초보자가 그 내용을 이해하기는 쉽지 않다는 점을 지적해 둔다. MNIST 손글씨 예제의 경우만 하더라도 TensorFlow2.0 이전의 기법으로 학습을 해왔지만 지금부터는 Keras API를 사용하는 문제로 격상되어버려 TensorFlow2.0 이전의 기법들과는 단절이 커 보인다. 이러한 갭을 매우기 위한 제 ..

머신러닝 2020.02.27

1-7 Google TensorFlow 홈페이지의 Keras MNIST Deep Learning 예제

Deep Learning 이란 무엇인가? Hidden Layer 란 무엇인가? 이런 개념을 간단히 이해하고 있는가? 앞 장의 예제(http://blog.daum.net/ejleep1/932)를 살펴보면 1X784 데이터와 784X10 웨이트 데이터와 10개의 바이아스를 사용하여 hypothesis states를 계산하고 활성화 함수 Softmax를 적용하여 Cross Entropy Cost 함수를 구성 후 Optimizer를 설정하여 경사하강법을 적용하게 된다. 여기에 Dense(128)처럼 은닉층이 추가될 때 One layer 만큼 Deep 해졌다고 하며 이때에 도입되는 웨이트 매트릭스의 크기가 128X10 이라면 128 만큼 Wide 해졌다고 볼 수 있다. 즉 784X10 웨이트 매트릭스 사용에서 (..

머신러닝 2020.02.09

1-11 matplotlib 에 의한 MNIST 수기문자 28X28 픽셀 흑백 그래픽 출력

텐서플로우 1.15.0 버전에서 MNIST 코드를 실행하고 읽어 들인 수기 문자 중의 하나를 matplot 라이브러리를 사용 흑백으로 출력해 보자. 함수 gen_image(arr)에서 arr은 placeholder에서 읽어 들이는 1X784 데이터 하나를 arr 로 넘겨주면 28X28 로 reshape 하여 출력한다. 함수 gen_image(arr)은 Session 모드에서 불러 사용한다. placeholder 명령에 의해 읽어 들이는 수기 문자는 1X784 로서 28X28 픽셀로 변환하여 출력하도록 한다. 흑백 출력에서 배경색인 0은 흰색으로 글자에 해당하는 픽셀의 색은 255를 검정색으로 하여 출력된다. 텐서플로우에서는 Session 단계 이전에서는 플로우 챠트에 해당하는 Graph 처리 단계이며 S..

머신러닝 2020.01.28

1-6 TensorFlow 1.15.0 과 2.0 버전 사이에서 Keras MNIST 예제

Keras 라이브러리 지원 하에서 MNIST hand written digits 예제를 다루어 보자. MNIST 예제는 현재 아직도 미국에서 개인들이 사용하는 우편물에서 반드시 수기로 기입해야 하는 지역 코드 즉 ZIP 코드를 대상으로 0∼9까지의 숫자를 6만개의 학습용(training) 데이터와 동일한 품질의 테스트용 데이터 1만개를 디지털화하여 데이터베이스를 구성하였고 LeCUN이 인터넷에 정리하여 올려 두었다. 다음의 그림을 참조하자. 수많은 수기 문자들이 있겠지만 인간의 지능으로 숫자 클라스 “0”에서 “9”까지를 보면 인식이 가능하다. 다양한 형태로 쓰여진 예를 들면 “0”의 다양한 수기 샘플들이 있겠지만 이들 모두는 하나의 라벨 값 “0” 으로 두면 될 것이다. 이 MNIST 수기문자에서 동일..

머신러닝 2020.01.26

3-3 Two Hidden Layers NN MNIST 문자인식률 계산

MNIST 문제에 하나의 은닉층(Neural Layer)을 가지는 뉴럴 네트워크를 적용해 보자. MNIST 문제는 머신 러닝 연구에서 알고리듬 적용 대상 일순위로서 수많은 연구가 이루어졌으며 이미 99.7% 이상의 인식률을 성취하고 있다. 한편 뉴럴 네트워크 형태를 기본으로 하는 CNN(Convolutionary Neural Network) 딥 러닝(Deep Learning)에 의해서 98.5% 의 인식률을 넘어가 버리기 때문에 머신 러닝을 배우면서도 간과해버리는 알고리듬 중에 하나가 바로 순수한 뉴럴 네트워크 구성에 의해서 즉 CNN 과 같은 특수한 기법 적용 없이 어느 정도 높은 인식률을 얻어낼 수 있는가 평가해 볼 필요가 있다. MNIST 문제에 있어서 은닉층이 하나라면 뉴럴 네트워크는 입력층, 은..

머신러닝 2019.12.26