저는 개인적으로 딥러닝 프레임워크 중에서 케라스(Keras)를 많이 선호합니다. 딥러닝을 텐서플로우로 시작하였고, 다소 어려웠던 텐서플로우 초기 버전에서 텐서플로우 2.0부터는 케라스를 기본으로 하여 텐서플로우도 이제 많은 사람들이 쉽게 딥러닝을 다룰 수 있게 도와줬기 때문입니다. 그런 고마운 케라스라는 존재를 만든 창시자 분이 직접 도서를 집필하였는데요. 1판의 경우 2018년에 나와서 많은 2019년 ~ 2020년에 대규모 변화가 있었던 텐서플로우의 비해 약간 늦은 감이 있어 현재 시점으로는 보기에 힘들 수 있는데요. 개정 2판이 나오면서 도서 역시 현재 버전에 맞게 다양하게 바뀌었습니다. 양장본 게다가 도서는 양장으로 되어 있어서 책 받침대에 놓거나 그냥 보기에도 상당히 편합니다. 저는 양장으로 된..
머신러닝 그중에 신경망은 딥러닝(Deep Learning) 시대로 넘어오고나서 빅데이터의 등장, GPU, 딥러닝 프레임워크(ex: tensorflow, torch 등), 옵티마이저 등등으로 인해 엄청난 발전을 이루게 되었다. 하지만, 양이 있으면 음도 있는 법 모든 시스템이 딥러닝에 적합한 것은 아니었다. 특히, 데이터가 풍부하지 못하거나 너무 많은 특징(Feature)를 가지고 있는 시스템의 경우 과적합(Overfitting) 이라는 문제가 발생하였는데 이 문제는 학습 데이터에 지나치게 학습되어 실제 운영 데이터에 제대로 된 결과를 보여주지 못하는 문제였다. 과적합을 해결하는 방법은 여러가지가 있으며, 한가지만 써서 문제가 해결되지 않는다. 예를 들어 데이터가 적은데 특징이 많을 경우 궁극적으로 과적합..
파이토치(Pytorch)는 페이스북에서 바톤터치를 한 이후 계속 만들고 잘 관리하고 있으며 한 때 텐서플로우로 딥러닝 시장이 제패될 것 같던 상황에서 파이토치가 기가 막히게 생명력을 유지하면서 최근에는 특정 분야는 더 앞서는 모습을 보여주기도 한다. Pytorch는 그냥 학문에서나 쓰이며 박사나 일부 연구원들이 사용하는 것이라 다짐하며, 다시는 배우지 않을거라 생각했지만 최근 들어 자연어처리쪽의 파이토치의 약진이 무섭다. 그래서 신기술을 빠르게 익히기 위해서 Pytorch를 배운다는 것은 선택이 아니라 필수가 되어 버렸다. 그럼 설치와 사용에 앞서 각각은 언제 사용하는 것이 좋은지 해외 아티클들을 뒤지면서 정리해보았다. Pytorch vs Keras vs Tensorflow 우선 초창기의 텐서플로우(Te..
다시 기초부터 포스팅 하나당 신경망 하나를 포스팅하는 것은 쓰는 사람도 그걸 받아들이는 사람들 중에 비전공자는 힘들 수 있다. 이미 MNIST(손글씨)와 유사한 Fashion MNIST(패션 아이콘)를 분류하는 모델을 포스팅한 적이 있지만, 하나하나 디테일하게 설명하지 못한 아쉬움이 있다. 이번 포스팅부터는 좀 더 쉽게 설명하기 위해서 신경망을 하나하나 코딩할 때마다 해당되는 기술들에 대해서 별도의 포스팅을 작성하고 어떤 방법으로 이루어지는지 써보도록 한다. 그리고 성능을 올리기 위해서 어떻게 튜닝을 하는지 적어보도록 하겠다. train에 사용될 매개변수(parameter)들 import tensorflow as tf import numpy as np from tensorflow import keras ..
케라스(Keras)와 텐서플로우(Tensorflow)로 구현한 시퀀스투시퀀스(Seq2Seq) 모델로 챗봇을 구현하고 있는데 예전 tensorflow에서는 Java에서 tensorflow를 지원해서 호출하였지만 현재 tensorflow 2.0은 Java에서 호출이 지원되지 않는다. 이를 해결하기 위해 자바에서 모델을 호출하는 방식이 아닌 python에서 자체적으로 웹서버를 띄우기로 하였고, Flask 라이브러리를 사용하였다. 라이브러리설치와 선언 > pip install flask-restful (python) E:\Project\universe\source-python>pip install flask-restful Collecting flask-restful Downloading Flask_RESTful..
이전 포스팅에서는 classification 모델을 MNIST 데이터를 이용하여 분류를 해보았다. 그러나 많은 사람들이 데이터가 약간만 변형이 되어도 즉 틀이 다른 데이터를 어떻게 학습해야 되는지 헷갈려 할수가 있다. 해당 포스팅은 대표적인 데이터셋인 붓꽃(IRIS) 데이터셋을 기반으로 신경망을 수행하고 학습하여 테스트셋 아이리스 값의 정확도를 측정한다. 참고로 해당 포스팅은 연속적인 지식의 습득을 위해 이전 포스팅의 신경망 소스와 크게 다르지 않다. 데이터 구조 아이리스 데이터 구조... 47,5.1,3.8,1.6,0.2,Iris-setosa 48,4.6,3.2,1.4,0.2,Iris-setosa 49,5.3,3.7,1.5,0.2,Iris-setosa 50,5,3.3,1.4,0.2,Iris-setosa..
MNIST(Modified National Institute of Standards and Technology database)는 0~9까지의 숫자를 사람들이 손으로 직접 쓴 손글씨를 이미지화한 데이터셋이다. 딥러닝(Deep Learning)을 제외한 머신러닝(Machine Learning)에 IRIS(붓꽃 데이터)셋이 있다면 딥러닝에는 MNIST가 있으며 그만큼 성능을 자랑하기에 매우 딥러닝에 효율적이며 기본으로 내장이 되어 있어서 언제든지 불러서 실습을 해볼 수가 있는 데이터셋이다. MNIST 데이터셋 최근에는 이에 MNIST보다 조금 더 분류가 힘든 fashion mnist라는 데이터셋이 신규로 추가되었다. 둘의 포맷은 완전히 동일하기에 성능을 측정하기에 MNIST보다 더 수월해보인다. Fashio..
텐서플로우가 2.0 버전으로 들어서게 되면서, 많은 변화들이 생겨났다. 최근 프로젝트를 강제로 2.0으로 변환하고 있는데 아직 해당 버전에 대한 이해도가 낮기 때문에 많이 힘들어서 자구책으로 케라스(Keras)로 변환하여 사용하고 있다. 텐서플로우 2.0대부터는 케라스가 텐서플로우 프로젝트에 편입되었기 때문에 케라스로 구현하든 텐서플로우 2.0으로 코딩하든 사실 크게 상관이 없겠지만, 케라스의 쉬운 코딩은 소스의 길이를 대폭 감소하고 텐서플로우 2.0을 써도 크게 문제가 되지 않는 모델을 만들어준다. 우선 그러면 1.0과 2.0이 얼마나 차이가 나는지 한번 보도록 해보자. 아래 소스는 Packt 출판사에서 발매한 "Deep Learning with TensorFlow 2 and Keras"라는 도서에서 ..
케라스(Keras) 설치가 완료되었으면, 이제 케라스를 이용해서 본격적으로 간단한 문제를 학습을 통해서 풀어보는 시간을 갖도록 하겠다. 학창 시절 방정식 문제를 지겹게 풀어봤을 터인데 컴퓨터의 학습은 바로 이 방정식으로 끝이 난다고 해도 과언이 아니다. y = ax + b 위에 있는 매우 쉬운 공식은 머신러닝과 딥러닝을 이해하기 위한 공식이며, 이것만 이해할 줄 안다면 모든 것은 아니지만 딥러닝을 학습할 준비는 모두 끝이 난 것이다. 위 공식을 기반으로 문제를 생성을 한번 해보겠다. 5 = a*2 + b 3 = a*1 + b 7 = a*3 + b 위 문제들을 보았을 때, a와 b의 값은 무엇일까? 사실 이정도는 수학과 담을 쌓은 사람이라고 해도 쉽게 풀 수 있을 것이다. 정답은 a=2, b=1 이다. 딥..
케라스(Keras)는 텐서플로우(Tensorflow)와 함께 대표적인 파이썬(Python)에서 사용하는 딥러닝(deep learning) 라이브러리이다. 많은 사람들이 텐서플로우와 케라스를 동일한 레벨에서 수행되는 라이벌 라이브러리라 착각 할 수 있지만, 둘은 라이벌 관계가 아니라 공생 관계라 할 수 있다. 이번 포스팅에서는 케라스에 대해서 간단히 개념에 대해서 설명을 하고 Python에서 케라스를 설치하는 방법에 대해서 간단히 적어보고자 한다. 케라스(Keras) 설명 케라스(Keras)는 파이썬으로 작성된 오픈 소스 신경망 라이브러리이다. MXNet, Deeplearning4j, 텐서플로, Microsoft Cognitive Toolkit 또는 Theano 위에서 수행할 수 있다. - 위키피디아 - ..