카테고리 보관물: Keras

Keras 2.2.4 Release

<케라스 창시자에게 배우는 딥러닝> 책이 출간되자 마자 공교롭게도 케라스 2.2.4 버전이 릴리스되었습니다. 🙂  2.2.4 버전은 며칠 전 릴리스된 2.2.3 버전의 버그 픽스입니다. 주요한 변경 사항은 2.2.3 버전에 담겨 있습니다. 몇 가지 눈에 띄이는 내용을 살펴 보겠습니다. 전체 변경 내용은 케라스 2.2.3 버전의 릴리스를 참고하세요.

  • 텐서플로 1.11.0의 Keras API와 통일하기 위해 ThresholdedReLULeakyReLU의 기능을 ReLU 클래스에 추가하였습니다. 이 때문에 ReLU 클래스에 두 개의 매개변수가 추가되었습니다. ThresholdedReLUtheta 매개변수 역할을 하는 thresholdLeakyReLUalpha 매개변수 역할을 하는 negative_slope입니다. 백엔드의 relu 함수에는 이미 alpha 매개변수가 있었기 때문에 threshold 매개변수만 추가되었습니다.
  • TensorBoard 콜백 클래스에 로깅 간격을 지정할 수 있는 update_freq 매개변수가 추가되었습니다. 기본값은 'epoch'로 이전과 동일하게 에포크마다 로그를 기록합니다. 'batch'는 배치마다 로그를 기록하고 정수를 입력하면 지정된 샘플 개수마다 로그를 기록합니다. tf.keras에는 아직 반영되지 않았습니다.
  • 다른 *Pooling2D 클래스처럼 MaxPooling1D, GlobalMaxPooling1D, AveragePooling1D, GlobalAveragePooling1D 에 data_format 매개변수가 추가되었습니다. data_format 매개변수의 값이 channels_last일 때 입력은 (batch_size, steps, features) 크기의 3D 텐서이고 channels_first일 때는 (batch_size, features, steps)입니다. 기본값은 channels_last입니다.
  • Conv2DTranspose 클래스에 아트루스 합성곱을 위한 dilation_rate 매개변수가 적용되었습니다.
  • EarlyStopping 콜백 클래스에 restore_best_weights 매개변수가 추가되었습니다. 이 매개변수를 True 지정하면 patience 에포크가 지난 후의 모델이 아니라 이전 모델 중에서 최선의 가중치로 설정된 모델이 반환됩니다. 기본값은 False 입니다.
  • 이전에는 무조건 float32 타입의 넘파이 배열을 반환했던 to_categorical 함수에 dtype 매개변수가 추가되었습니다. 'float64', 'int32' 등을 지정할 수 있으며 기본값은 'float32' 입니다.

“케라스 창시자에게 배우는 딥러닝”이 출간되었습니다.

keras_dl_b 케라스 창시자이자 구글 AI 연구원인 프랑소와 숄레(François Chollet)의 “Deep Learning with Python“의 번역서 <케라스 창시자에게 배우는 딥러닝>이 출간되었습니다! 온라인/오프라인 서점에서 판매 중입니다.

이 책은 케라스를 사용하여 딥러닝의 기초와 다양한 실전 모델을 배울 수 있도록 안내합니다. 또 프랑소와의 딥러닝에 대한 견해와 전망을 엿볼 수 있습니다. 예제 코드는 깃허브에 공개되어 있습니다. 블로그에 실었던 원서에 대한 소개번역 후기도 참고하세요.

케라스의 새 버전에 맞추어 코드를 수정하고 에러타를 꾸준히 반영하겠습니다. 도서 메일링 리스트에 가입하면 편하게 에러타를 확인할 수 있습니다.

책을 만드는 데 도움을 주신 많은 분들께 다시 한번 감사드립니다!

Deep Learning with Python 번역 후기

chollet-dlp-hi원래는 좀 더 일찍 시작했어야 했지만 ‘핸즈온 머신러닝‘ 작업이 늦어지면서 4월에 들어서 시작하였습니다. 케라스를 만든 프랑소와 숄레가 직접 쓴 책이라 이전부터 기대가 컸습니다. 역시나 아마존에서 높은 인기를 끌고 있네요. 4개월 동안의 작업을 마무리하면서 번역의 후기를 남깁니다.

‘Deep Learning with Python’은 케라스를 사용하여 딥러닝의 다양한 모델을 배울 수 있도록 안내합니다. 합성곱, 순환 신경망을 포함하여 컨브넷 필터 시각화, 딥드림, 뉴럴 스타일 트랜스퍼, VAE, GAN까지 다루고 있습니다. 재미있게도 수학 공식을 극도로 줄이고 대부분의 이론 설명을 파이썬 코드로 풀어갑니다. 딥러닝을 공부하려는 소프트웨어 엔지니어를 주요 독자층으로 생각하기 때문입니다.

순조롭게 진행되던 번역 작업은 6장을 만나면서 암초에 부딪혔습니다. 눈에 띄는 에러타(프랑소와가 왜 이렇게 썼을까..)가 많이 나왔습니다.  반면 매닝의 에러타 포럼 페이지는 사용자들이 올린 에러타만 쌓일 뿐 이에 대한 반응이 거의 없습니다. 저자가 바쁘기 때문인지 아니면 출판사의 게으름인지 알 도리가 없습니다. 신중하게 에러타를 선별하여 번역서에 반영하였습니다.

또 한번의 암초는 이번 여름의 더위입니다. 너무나 더워서 자정이 넘어서도 키보드를 두드릴 수가 없었죠. 거북이 같던 걸음마였지만 조금씩 진행된 것이 쌓여 결국 모든 번역을 마무리할 수 있었습니다. 이젠 조금 선선해진(?) 날씨에 1차 역자 교정을 마치고 홀가분한 마음으로 이 글을 적습니다. 남은 것은 머릿말과 저자 소개 정도네요.

이 책은 1부와 2부로 나뉘어져 있습니다. 1부(1장~4장)는 딥러닝의 기초, 2부(5장~9장)는 실전 딥러닝의 내용을 담고 있습니다. 간단한 목차는 다음과 같습니다.

  1. 딥러닝이란 무엇인가?
  2. 시작하기 전에: 신경망의 수학적 구성 요소
  3. 신경망 시작하기
  4. 머신 러닝의 기본 요소
  5. 컴퓨터 비전을 위한 딥러닝
  6. 텍스트와 시퀀스를 위한 딥러닝
  7. 딥러닝을 위한 고급 도구
  8. 생성 모델을 위한 딥러닝
  9. 결론

이 책에서 맘에 드는 두 개의 장을 고르라면 6장과 9장입니다. 6장은 시퀀스 처리를 위한 딥러닝을 소개합니다. 기본 RNN으로 시작해서 LSTM, GRU, 양방향 RNN, 1D 컨브넷과 이들의 조합으로 텍스트와 시계열 데이터를 처리하는 다양한 예를 소개합니다. 다른 딥러닝 책에 비해 RNN에 대한 내용이 좀 더 풍부합니다. 9장은 책의 전체 내용을 정리하면서 딥러닝의 한계와 발전 방향에 대해 소개를 합니다. 이 장에서 저자가 생각하는 딥러닝의 방향과 비전을 엿볼 수 있어 아주 좋았습니다.

번역서는 <케라스 창시자에게 배우는 딥러닝>이란 제목으로 출간될 예정입니다. 8월 말부터 베타 테스트를 시작합니다. 조판과 디자인까지 완료되면 10월 초에는 받아볼 수 있을 것 같습니다. 🙂

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 클래스를 리팩토링한 것이 가장 큰 변화같습니다. ModelSequential 클래스의 상속관계를 직관적으로 만들었습니다. 이전 버전까지는 Sequential 클래스에서 Model 클래스의 객체를 만들어 model 속성에 저장했습니다. 이제는 Model 클래스의 단순 상속 클래스이기 때문에 평범한 파이썬 클래스처럼 Model 클래스의 메서드를 참조할 수 있습니다. Sequential 클래스의 model 속성은 deprecated 됩니다. 이런 변경 덕택에 나만의 모델 클래스를 쉽게 서브 클래스로 만들 수 있습니다.

또 하나의 변경 사항은 모델의 fit(), predict(), evaludate() 메서드의 입력값으로 텐서플로의 텐서를 넣을 수 있습니다. 물론 텐서플로 백엔드일 경우에만 가능합니다. make_one_shot_iterator() 메서드 등으로 tf.Iterator 객체를 만들어 주입할 수 있습니다.

자세한 내용은 릴리즈 노트를 참고하세요. 케라스는 pip로 간단하게 설치할 수 있습니다.

$ pip install keras