길벗에서 현재 번역하고 있는 Deep Learning with Python의 베타 테스터를 모집하네요. 베타 테스터에 참여하신 분들에게는 출간(October!)된 번역서를 보내 준답니다! 🙂
태그 보관물: Keras
TensorFlow 1.9.0 RC0, Keras 2.2.0 Release
텐서플로 1.9.0 RC0 버전이 릴리즈되었습니다. tf.keras
가 케라스 2.1.6 버전 API로 업데이트되었습니다. tf.layers
하위 클래스들이 tf.keras.layers
를 상속하도록 변경되었습니다. 텐서플로의 고수준 API와 케라스 API가 공통 분모를 가지게 되었다는 점이 흥미롭습니다.
그 외에도 버그 수정과 기능의 변화가 많이 있습니다. 자세한 내용은 릴리즈 노트를 참고하세요. 1.9.0 RC0 버전은 pip 명령으로 간단히 설치할 수 있습니다.
$ pip install --upgrade --pre tensorflow $ pip install --upgrade --pre tensorflow-gpu
(업데이트) 텐서플로 1.9.0 RC1 버전이 릴리즈되었습니다.
(업데이트) 텐서플로 1.9.0 RC2 버전이 릴리즈되었습니다.
케라스 2.2.0 버전이 릴리즈되었습니다. Model 클래스를 리팩토링한 것이 가장 큰 변화같습니다. Model
과 Sequential
클래스의 상속관계를 직관적으로 만들었습니다. 이전 버전까지는 Sequential
클래스에서 Model
클래스의 객체를 만들어 model
속성에 저장했습니다. 이제는 Model
클래스의 단순 상속 클래스이기 때문에 평범한 파이썬 클래스처럼 Model
클래스의 메서드를 참조할 수 있습니다. Sequential
클래스의 model
속성은 deprecated 됩니다. 이런 변경 덕택에 나만의 모델 클래스를 쉽게 서브 클래스로 만들 수 있습니다.
또 하나의 변경 사항은 모델의 fit()
, predict()
, evaludate()
메서드의 입력값으로 텐서플로의 텐서를 넣을 수 있습니다. 물론 텐서플로 백엔드일 경우에만 가능합니다. make_one_shot_iterator()
메서드 등으로 tf.Iterator
객체를 만들어 주입할 수 있습니다.
자세한 내용은 릴리즈 노트를 참고하세요. 케라스는 pip로 간단하게 설치할 수 있습니다.
$ pip install keras
Keras Cheat Sheet
일전에 데이터캠프(datacamp.com)에서 만든 치트 시트 시리즈를 소개했었습니다. scikit-learn, numpy, pandas, scipy, matplotlib에 이어 이제는 케라스(Keras)의 치트 시트도 나왔습니다! 🙂
최근에는 케라스에 MXNet과 CNTK를 백엔드로 지원하기 위한 작업이 진행되고 있습니다. 이렇게 되면 래퍼(wrapper) 라이브러리의 지존이 되겠군요. 케라스 책으로는 처음 팩트(packtpub)에서 ‘Deep Learning with Keras‘가 출간되었습니다. 이 책도 읽고 나서 간단히 리뷰해보도록 하겠습니다.
Keras 2.0 Release
이전에 예고됐던 케라스 2.0이 릴리즈 되었습니다. 케라스 2.0도 많은 API 변경이 있습니다. 다행히(!) 앞으로 큰 변화는 없을 것이라고 하네요. 텐서플로우와 마찬가지로 케라스로 만든 코드도 다시 손을 봐야할 것 같습니다. 2.0 버전이 이미 PyPI에 올라가 있으므로 간단히 pip
명령으로 버전을 업그레이드 할 수 있습니다. 조금 더 자세한 내용은 케라스 2.0 릴리즈 노트를 참고하세요.
TensorFlow 1.0 RC2 Release & Keras 2
텐서플로우 1.0 RC2 버전이 릴리즈되었습니다. 다음주 텐서플로우 Dev Summit 위해 달리는 것 같습니다. 그리고 케라스(Keras)의 버전 2가 준비되고 있습니다. 케라스도 버전 2에서 API 변화가 있다고 합니다. 버전 1의 API 를 그대로 쓸 수 있지만 deprecated 경고가 뜨니 바꾸긴 해야할 것 같습니다. 그리고 마이크로 소프트의 CNTK도 케라스의 백엔드로 들어올 예정입니다.
또 프랑소와 숄레가 직접 예고한 대로 케라스가 텐서플로우 코드 베이스로 들어 갑니다. 다만 기존 케라스 깃허브는 그대로 유지되며 이로 인해 미치는 영향은 없을 것이라고 합니다. 텐서플로우로 들어간 케라스는 처음에는 tf.contrib
에 있다가 tf.keras
로 바뀔 것이라 합니다. 프랑소와가 케라스 코드를 4번째 재작성하고 있다는데 몇주만에 끝낼 모양입니다. @.@
텐서플로우 1.0 RC2 버전은 pip
에 패키지 명을 직접 입력하여 설치할 수 있습니다.
##### 파이썬 2.7 # Ubuntu/Linux 64-bit, CPU only, Python 2.7 $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp27-none-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 2.7 # Requires CUDA toolkit 8.0 and CuDNN v5. $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp27-none-linux_x86_64.whl # Mac OS X, CPU only, Python 2.7: $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0rc2-py2-none-any.whl # Mac OS X, GPU enabled, Python 2.7: $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0rc2-py2-none-any.whl ##### 파이썬 3.x # Ubuntu/Linux 64-bit, CPU only, Python 3.3 $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp33-cp33m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.3 # Requires CUDA toolkit 8.0 and CuDNN v5. $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp33-cp33m-linux_x86_64.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.4 $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp34-cp34m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.4 # Requires CUDA toolkit 8.0 and CuDNN v5. $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp34-cp34m-linux_x86_64.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.5 $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp35-cp35m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.5 # Requires CUDA toolkit 8.0 and CuDNN v5. $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp35-cp35m-linux_x86_64.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.6 $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp36-cp36m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.6 # Requires CUDA toolkit 8.0 and CuDNN v5. $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp36-cp36m-linux_x86_64.whl # Mac OS X, CPU only, Python 3.4 or 3.5: $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0rc2-py3-none-any.whl # Mac OS X, GPU enabled, Python 3.4 or 3.5: $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0rc2-py3-none-any.whl #### 설치 $ sudo pip install --upgrade $TF_BINARY_URL
윈도우즈 CPU:
C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0rc2-cp35-cp35m-win_amd64.whl
윈도우즈 GPU:
C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.0.0rc2-cp35-cp35m-win_amd64.whl
New DL Book: DL with Python
매닝(manning) 출판사에서 새 딥러닝 책인 “Deep Learning with Python“의 MEAP 버전이 공개되었습니다. 이 책은 케라스(Keras) 개발자 프랑소와 숄레(François Chollet)가 올해 쓰기로 했던 바로 그 책입니다. 1장은 무료로 공개되어 있고 현재 3장까지 쓰여졌습니다. 전체 책은 올 가을 이후에 만날 수 있을 것 같습니다.
PART 1: THE FUNDAMENTALS OF DEEP LEARNING
1 What is Deep Learning?
2 Before we start: the mathematical building blocks of neural networks
3 Getting started with neural networks
4 Fundamentals of machine learning
PART 2: DEEP LEARNING IN PRACTICE
5 Deep learning for computer vision
6 Deep learning for text and sequences
7 Advanced neural network design
8 Generative deep learning
9 Conclusion
(업데이트) 이 책은 길벗 출판사를 통해 번역서를 출간할 예정입니다. 이 책의 R 버전은 어딘지는 모르겠지만 준비되고 있는 것으로 알고 있습니다. 🙂
Keras go to TensorFlow
케라스(Keras)를 개발한 구글의 프랑소와 숄레(François Chollet)가 트위터에 남긴 글과 fast.ai 의 블로그로 미루어 보아 케라스가 텐서플로우의 contrib 아래로 들어갈 것 같습니다. 아마도 케라스에서 텐서플로우 부분만 떼어내서 들어가지 않을까 예상됩니다. tf.slim 은 contrib.laryer 와 contrib.slim 에 있는 가장 널리 사용되는 텐서플로우 래퍼(wrapper) 중 하나입니다. 케라스가 포함되면 tf.slim과 함께 텐서플로우의 주요한 하이레벨 API 가 될 것 같습니다.
Quiver: Deep Visualization for Keras
카페(Caffe)의 모델에서 피처를 비주얼라이제이션 해 주는 Deep Visualization Toolbox(github)가 비교적 잘 알려져 있습니다. 아래 동영상으로도 유명하죠.
Deep Visualization Toolbox 의 케라스(Keras) 버전격인 퀴버(Quiver, github)가 만들어졌습니다. 케라스의 백엔드를 텐서플로우로 사용하면 퀴버가 텐서플로우에서도 유용하게 사용될 수 있을 것 같습니다. 케라스의 생태계가 빠르게 성장하고 있는 것 같네요. 아래 동영상과 깃허브 레파지토리를 함께 참고하세요.
(업데이트) 얼마전에 구글의 withgoogle.com 에 aiexperiments 가 추가되었는데요. 여기에 진 코간(Gene Kogan)이 만든 콘볼루션의 피처와 필터를 보여주는 데모 ‘What Neural Networks See‘ 가 있습니다. 동영상에서 데모를 보여주면서 설명도 해 주고 있습니다. 이 소스는 C++ 로 만들어져 있으며 깃허브에서 확인하실 수 있습니다.
Keras.js: run dl model with GPU
케라스(Keras)로 훈련된 모델을 브라우저에서 실행시킬 수 있는 자바스크립트 라이브러리 Keras.js 가 공개되었습니다. 케라스로 만든 모델을 json 으로 출력하고 훈련된 파라메타는 HDF5로 저장합니다. 그런 후에 Keras.js 에서 제공하는 인코더로 훈련된 파라메타를 자바스크립트가 읽을 수 있도록 직렬화하여 모델 json과 함께 브라우저로 로드하여 사용합니다. Keras.js 는 WebGL 자바스크립트 라이브러인 weblas 를 사용하고 있어서 브라우저에서 GPU 가속을 사용할 수 있습니다. 기본으로 제공되는 모델 파라메타는 MNIST, ResNet50, Inception V3 등이 있습니다.
콘볼루션 뉴럴 네트워크를 훈련시킬 수 있는 자바스크립트 라이브러리로는 OpenAI 안드레이 카패시(Andrej Karpathy)의 ConvNetJS 가 유명합니다. 하지만 Keras.js 는 콘볼루션 뿐만 아니라 LSTM 모델 등 다양한 모델을 지원한다는 게 장점인 것 같습니다. 이전에 소개했던 regl-cnn 보다도 훨씬 발전된 라이브러리로 보입니다. 다양한 레이어와 활성화 함수를 구현한 Keras.js 의 소스는 깃허브에 MIT 라이센스로 공개되어 있습니다.
(업데이트) Keras.js 를 사용하여 브라우저에서 웹캠으로 찍은 이미지를 분류하는 데모가 공개되었습니다. ResNet50을 사용하였고 로딩되는데 조금 시간이 걸리지만 크롬 브라우저에서 잘 작동이 됩니다. 왼쪽 화면이 웹캠 영상이고 오른쪽 이미지가 대략 5초마다 찍힌 스샷 이미지입니다. 스샷이 찍히면 자동으로 아래쪽에 어떤 물체인지 분류가 됩니다.
OpenAI cleverhans training with adversarial examples
OpenAI의 이안 굿펠로우(Ian Goodfellow)가 에러가 포함된 데이터(adversarial example)를 사용하여 모델을 더욱 견고하게 만들어 줄 수 있는 프레임워크 cleverhans를 오픈소스로 공개하였습니다. cleverhans는 파이썬2를 기반으로 하고 있으며 케라스(Keras)와 텐서플로우를 사용합니다. 아직 개발 초기 단계라 딱히 설치 방법을 제공하고 있지 않고 레파지토리를 클론해서 소스가 들어있는 cleverhans 디렉토리를 임포트해서 사용하면 됩니다. 현재는 MNIST 데이터를 사용한 예제만 제공되는 데 앞으로 튜토리얼이 더 추가될 수 있을 것 같습니다.
이 라이브러리는 현재 FGSM(Fast Gradient Sign Method) 방식으로 에러가 포함된 데이터(adversarial example)를 생성해 냅니다. 그리고는 이 데이터를 사용하여 모델을 다시 학습시키도록 하고 있습니다.
# Craft adversarial examples using Fast Gradient Sign Method (FGSM) ... adv_x_2 = fgsm(x, predictions_2, eps=0.3 predictions_2_adv = model_2(adv_x_2) # Perform adversarial training tf_model_train(sess, x, y, predictions_2, X_train, Y_train, predictions_adv=predictions_2_adv)
처음 모델의 정확도는 약 95.9% 였지만 에러가 들어 있는 데이터에 대해서는 불과 3.5% 밖에 되지 않았습니다. 하지만 에러가 들어있는 데이터를 이용해 두번째 모델을 만들어 손실 함수(loss function)를 보정하여 학습을 시킵니다. 이로 인해 테스트 데이터의 정확도는 95.1%로 조금 낮아졌지만 에러가 있는 데이터에 대한 정확도는 56.2%로 크게 성장한 것을 확인할 수 있습니다.
Test accuracy on legitimate test examples: 0.9589203125 Test accuracy on adversarial examples: 0.03577734375 ... Test accuracy on legitimate test examples: 0.951059375 Test accuracy on adversarial examples: 0.5620109375
텐서플로우 0.10.0 + 케라스 1.1.0 에서 테스트하였습니다.