Tag Archives: 텐서플로

“머신 러닝 교과서 3판”이 출간되었습니다.

세바스찬 라시카Sebastian Raschka와 바히드 미자리리Vahid Mirjalili가 쓴 아마존 베스트셀러 <Python Machine Learning 3rd Ed.>의 번역판인 <머신 러닝 교과서 3판>이 출간되었습니다!

3판은 사이킷런과 텐서플로 최신 버전의 변경 사항을 담았으며 코랩에서 실행할 수 있습니다. 특히 딥러닝 파트는 완전히 새롭게 리뉴얼되어 콘텐츠가 크게 보강되었습니다. 무엇보다도 이번에 새롭게 GAN강화 학습이 추가되어 머신러닝의 끝판왕이라고 부를만합니다!

출간에 맞추어 동영상 강의를 제작해 유튜브에 올리고 있습니다. 혼자 공부하시는 분들에게 도움이 되었으면 좋겠습니다. 궁금한 점이 있다면 블로그나 카카오 오픈채팅(http://bit.ly/tensor-chat)으로 알려 주세요!

온라인/오프라인 서점에서 판매 중입니다! 868페이지, 풀 컬러: 39,600원 [Yes24], [교보문고], [알라딘]

“혼자 공부하는 머신러닝+딥러닝”이 출간되었습니다!

혹시 머신러닝, 딥러닝을 이제 막 배우려고 마음 먹으셨나요? 또는 어려워서 중간에 포기하신 적이 있나요? 더이상 이 공부를 미룰 수 없는 “혼공족”을 위해 <혼자 공부하는 머신러닝+딥러닝>이 출간되었습니다! 🙂

머신러닝과 딥러닝의 중요한 개념과 예제를 많은 삽화와 함께 친절히 설명하는 책입니다. <혼자 공부하는 머신러닝+딥러닝>은 동영상 강의와 함께 합니다.

책의 코드는 구글 코랩(Colab)엘리스 아카데미 강의를 통해 실습할 수 있습니다.

풀 컬러, 580 페이지에 맛깔스런 삽화를 한 가득 준비했습니다. 손계원 님의 책 리뷰도 참고하세요. 지금 온라인/오프라인 서점에서 판매 중입니다! [교보문고] [Yes24] [알라딘] [한빛미디어] [전자책]

책에 넣기 위해 제가 손으로 직접 그린 혼공 머신러닝의 로드맵입니다. 당연히 책에는 풀컬러 그래픽으로 완전 멋지게 들어가 있습니다. ㅎ

감사합니다! 🙂

“딥러닝 일러스트레이티드”가 출간되었습니다!

아마존 베스트 셀러인 <Deep Learning Illustrated>의 한글 번역서인 <딥러닝 일러스트레이티드>가 출간되었습니다. 딥러닝 역사에서 GAN과 강화 학습까지 이 분야의 흥미진진한 기술을 가득담고 있습니다. 저자들의 직관적이고 명쾌한 설명으로 딥러닝의 진수를 맛볼 수 있습니다. 특히 파리지엔느인 아그레이가 그린 이 분야 거장들의 멋진 일러스트를 책 미리보기에서 지금 확인해 보세요!

깃허브에 있는 모든 코드는 구글 코랩(Colab)에서 실행할 수 있습니다! 삼엽충과 함께 딥러닝의 세계로 떠나보시죠! 🙂

친절하게도 저자 존 크론이 링크드인에서 직접 번역서를 소개해 주었습니다. 🙂

“핸즈온 머신러닝 2” 교보문고 2020 올해의 책 선정!

교보문고에서 진행한 “2020 올해의 책 IT 전문서” 투표에서 머신러닝/딥러닝 부분에서 “핸즈온 머신러닝 2“가 선정되었습니다. 정말 큰 영광입니다. 긴 시간 함께 노력해준 한빛미디어 윤나리 님께도 감사드립니다. 이 책을 좋아해 주고 투표에 참여해 주신 모든 독자 분들께 감사드립니다. 책은 늘 오타가 있습니다. 오류를 찾아 알려 주신 독자분들께 정말 깊이 감사드립니다. Yes24 “2020 IT 연말결산“에서도 2020 베스트 IT 전문서에 “핸즈온 머신러닝 2“가 선정되었습니다!

핸즈온 머신러닝 2 에러타 안내

안녕하세요. 핸즈온 머신러닝 2에 새롭게 에러타가 많이 추가되었습니다. 이번 에러타는 원서에 누적된 오류 보고를 포함하였고 사이킷런과 텐서플로 최신 버전에서 변경된 내용을 반영하였습니다. 다음 에러타 항목을 참고해 주세요. 핸즈온 머신러닝 2의 전체 에러타는 여기를 참고해 주세요. 감사합니다!

  1. (p100) 두 번째 문단 끝에 다음처럼 주석을 추가합니다. “… SimpleImputer의 객체를 생성합니다.<주석>옮긴이_ 사이킷런 0.22버전에서 최근접 이웃 방식으로 누락된 값을 대체하는 KNNImputer 클래스가 추가되었습니다.</주석>”
  2. (p109) 첫 번째 문단 끝에 다음처럼 주석을 추가합니다. “… 변환을 적용해보겠습니다.<주석>옮긴이_ 사이킷런 0.22버전에서 열 이름이나 데이터 타입을 기반으로 열을 선택할 수 있는 make_column_selector() 함수가 추가되었습니다.</주석>”
  3. (p118) 54번 주석 끝에 다음 문장을 추가합니다. “사이킷런 0.24버전에서 파라미터 탐색 범위를 좁혀가면서 컴퓨팅 자원을 늘려가는 HalvingGridSearchCV와 HalvingRandomSearchCV가 추가됩니다. 이 예제는 https://bit.ly/halving-grid-search를 참고하세요.”
  4. (p128) 첫 번째 문장 끝에 다음처럼 주석을 추가합니다. “… 구조를 가지고 있습니다.<주석>옮긴이_ 사이킷런 0.22버전에서 fetch_openml() 함수에 as_frame 매개변수가 추가되었습니다. 이 매개변수를 True로 설정하면 판다스 데이터프레임을 반환합니다.</주석>”
  5. (p140) 6번 주석 끝에 다음 문장을 추가합니다. “사이킷런 0.22버전에서 정밀도/재현율 곡선을 그려주는 plot_precision_recall_curve() 함수가 추가되었습니다.”
  6. (p142) 첫 번째 문장 끝에 다음처럼 주석을 추가합니다. “… 그래프를 그립니다.<주석>옮긴이_ 사이킷런 0.22버전에서 ROC 곡선을 그려주는 plot_roc_curve() 함수가 추가되었습니다.</주석>”
  7. (p149) 첫 번째 문장 끝에 다음처럼 주석을 추가합니다. “… 편리할 때가 많습니다.<주석>옮긴이_ 사이킷런 0.22버전에서 오차 행렬을 그래프로 그려주는 plot_confusion_matrix() 함수가 추가되었습니다.</주석>”
  8. (p188) 첫 번째 문단 2번째 줄에서 “2차방정식처럼 보이며 거의 선형적입니다“를 “3차방정식처럼 보입니다“로 정정합니다.
  9. (p230) 1번 주석 끝에 다음 문장을 추가합니다. “사이킷런 0.21버전에서 dot 파일을 만들지 않고 바로 트리를 그릴 수 있는 plot_tree() 함수도 추가되었습니다.”
  10. (p236) 5번 주석을 다음과 같이 바꿉니다. “옮긴이_ 사이킷런 0.21버전에서 히스토그램 기반 그레이디언트 부스팅이 추가되었고 presort 매개변수로 얻을 수 있는 성능 향상이 크지 않기 때문에 사이킷런 0.24버전에서 결정 트리와 그레이디언트 부스팅 클래스의 presort 매개변수가 삭제됩니다.”
  11. (p238) 9번 주석에서 “… min_impurity_decrease 분할 대상이 되기 위해 … min_impurity_split가 추가되었습니다“를 “… min_impurity_decrease가 추가되었습니다. 분할 대상이 되기 위해 … min_impurity_split는 0.25버전에서 삭제됩니다“로 수정합니다. 또 10번 주석 끝에서 “… 지원합니다“를 “… 지원했지만 0.22버전에서 비용 복잡도 기반의 사후 가지치기를 위한 ccp_alpha 매개변수가 결정 트리와 트리 기반의 앙상블 모델에 추가되었습니다“로 수정합니다.
  12. (p254) 7.4절 아래 두 번째 문장 끝에 다음처럼 주석을 추가합니다. “… 크기로 지정합니다.<주석>옮긴이_ 사이킷런 0.22버전에서 랜덤 포레스트 클래스에 부트스트랩 샘플 크기를 지정할 수 있는 max_samples 매개변수가 추가되었습니다. 샘플 크기를 정수로 입력하거나 비율을 실수로 지정할 수 있습니다. 기본값은 훈련 세트 전체 크기입니다.<주석>”
  13. (p262) 7.5.2절에서 두 번째 문단, 첫 번째 줄에서 “그레이디언트 부스팅은 회귀 문제에도 아주 잘 작동합니다”를 “그레이디언트 부스팅은 분류 문제에도 아주 잘 작동합니다”로 정정합니다.
  14. (p266) 첫 번째 문단 끝에 다음처럼 주석을 추가합니다. “… 훈련을 멈춥니다.<주석>옮긴이_ 사이킷런 0.20버전에서 그래디언트 부스팅에 조기 종료 기능이 추가되었습니다. 훈련 데이터에서 validation_fraction 비율(기본값 0.1)만큼 떼어 내어 측정한 손실이 n_iter_no_change 반복 동안에 tol 값(기본값 1e-4) 이상 향상되지 않으면 훈련이 멈춥니다.</주석>”
  15. (p267) 두 번째 문단 끝에 다음처럼 주석을 추가합니다. “… 매우 비슷합니다.<주석>옮긴이_ 이외에도 히스토그램 기반 그레이디언트 부스팅을 구현한 LightGBM(https://lightgbm.readthedocs.io)이 있습니다. 사이킷런 0.21버전에서 히스토그램 기반 그레이디언트 부스팅을 구현한 HistGradientBoostingClassifier와 HistGradientBoostingRegressor가 추가되었습니다.</주석>”
  16. (p271) 첫 번째 문장 끝에서 다음처럼 주석을 추가합니다. “… 지원하지 않습니다.<주석>옮긴이_ 사이킷런 0.22버전에서 StackingClassifier와 StackingRegressor가 추가되었습니다.</주석>”
  17. (p319) 9.1.5절 아래 첫 번째 문단 끝에 다음처럼 주석을 추가합니다. “… 훈련해보겠습니다.<주석>옮긴이_ 사이킷런 0.24버전에서 준지도 학습을 위한 SelfTrainingClassifier가 추가됩니다.</주석>”
  18. (p358) 첫 번째 문단 끝에서 “… 다중 출력 분류기multioutput classifier입니다.”를 “… 다중 레이블 분류기multilabel classifier입니다.”로 정정합니다.
  19. (p380) 아래에서 두 번째 문단 끝에서 “(89% 검증 정확도에 가까이 도달할 것입니다)”를 “(89.4% 검증 정확도에 가까이 도달할 것입니다)”로 수정합니다.
  20. (p405) 페이지 끝에 다음처럼 주석을 추가합니다. “… 배치 크기를 사용해보세요.<주석>옮긴이_ 텐서플로 2.4버전에서 케라스 모델의 compile() 메서드에 있는 steps_per_execution 매개변수를 1이상으로 설정하면 계산 그래프를 한 번 실행할 때 여러 배치를 처리할 수 있기 때문에 GPU를 최대로 활용하고 배치 크기를 바꾸지 않고 훈련 속도를 높일 수 있습니다.</주석>”
  21. (p408) 6번 문제 두 번째와 세 번째 항목에서 “가중치 벡터“를 “가중치 행렬“로 정정합니다.
  22. (p465) 12.2절 아래 첫 번째 문단 끝에 다음처럼 주석을 추가합니다. “… 방법을 알아봅니다.<주석>옮긴이_ 텐서플로 2.4버전에서 넘파이 호환 API인 tf.experimental.numpy가 추가되었습니다.</주석>”
  23. (p475) 첫 번째 코드 블럭에서 my_softplus 함수 옆의 주석을 “# tf.nn.softplus(z)와 반환값이 같습니다.“에서 “# tf.nn.softplus(z)가 큰 입력을 더 잘 다룹니다.“로 수정합니다.
  24. (p492) 22번 주석 끝에 다음 문장을 추가합니다. “이 예는 번역서 깃허브에 있는 custom_model_in_keras.ipynb 주피터 노트북을 참고하세요.”
  25. (p531) 13.3.3절 아래 첫 번째 문장 끝에 다음처럼 주석을 추가합니다. “… 노력하고 있습니다.<주석>옮긴이_ tf.keras.layers.experimental.preprocessing 아래 이미지 처리, 이미지 증식, 범주형 데이터에 관련된 전처리 층이 추가되었습니다.</주석>”
  26. (p633) 첫 번째 문단 마지막 부분에 “타깃(마지막 글자)를 분리하겠습니다”를 “타깃(마지막 100개의글자)를 분리하겠습니다”로 정정합니다.
  27. (p662) [식 16-2] 위 두 번째 줄에서 “아래쪽에 (전치되어) 표현되어 있습니다”를 “위쪽에 (전치되어) 표현되어 있습니다”로 정정합니다.
  28. (p663) 위에서 네 번째 줄에서 “왼쪽 아래 수직 점선으로”를 “왼쪽  수직 점선으로”로 정정합니다.
  29. (p711) [그림 17-19] 위의 “예를 들어 생성자의 출력을 ~ 풀링 층이 뒤따릅니다).” 문단을 다음 문단으로 교체합니다.
    “예를 들어 생성자의 출력을 4 × 4에서 8 × 8로 크게하려면(그림 17-19) 기존 합성곱 층(“합성곱 층 1”)에 (최근접 이웃 필터링을 사용한27) 업샘플링 층을 추가하여 8 × 8 크기 특성 맵을 출력합니다. 이 특성 맵이 새로운 합성곱 층(“합성곱 층 2”)으로 주입되고 다시 새로운 출력 합성곱 층으로 주입됩니다. “합성곱 층 1”의 훈련된 가중치를 잃지 않기 위해 ([그림 17-19]에 점선으로 표시된) 두 개의 새로운 합성곱 층을 점진적으로 페이드-인fade-in하고 원래 출력층을 페이드-아웃fade-out합니다. 이렇게 하기위해 새로운 출력(가중치 α)과 원래 출력(가중치 1 – α)의 가중치 합으로 최종 출력을 만듭니다. 비슷한 페이드-인fade-in/페이드-아웃fade-out 기법이 판별자에 새로운 합성곱 층을 추가할 때 사용됩니다(다운샘플링을 위해 평균 풀링 층이 뒤따릅니다). 모든 합성곱 층은 “same” 스트라이드 1을 사용하므로 입력의 높이와 너비를 보존합니다. 원래 합성곱 층도 마찬가지입니다. 따라서 (입력이 8 × 8이기 때문에) 8 × 8 출력을 만듭니다. 마지막으로 출력층의 커널 크기는 1입니다. 이를 사용해 입력을 필요한 컬러 채널 수 (일반적으로 3)로 투영합니다.”
  30. (p756) 위에서 3번째 줄에 “오차는 전이 (s, r, s’)가 매우 놀랍다는”를 오차는 전이 (s, a, s’)가 매우 놀랍다는”로 정정합니다.
  31. (p811) 주석 16번 끝에 다음 문장을 추가합니다. “텐서플로 2.4에서 GPU 메모리 사용량을 반환하는 tf.config.experimental.get_memory_usage() 함수가 추가되었습니다.”
  32. (p834) 첫 번째 문단 끝에 다음처럼 주석을 추가합니다. “… 훈련 코드를 실행합니다.<주석>옮긴이_MultiWorkerMirroredStrategy는 텐서플로 2.4에서 experimental을 벗어나 안정 API가 됩니다.</주석>” 또한 마지막 문단, 마지막 문장 끝에 다음처럼 주석을 추가합니다. “… 생성자에 전달하세요.<주석>옮긴이_ 텐서플로 2.4에서 CollectiveCommunication 클래스의 이름이 CommunicationImplementation로 바뀝니다.</주석>
  33. (p835) 두 번째 문단 끝에 다음처럼 주석을 추가합니다. “… 전략과 동일합니다).<주석>옮긴이_TPUStrategy는 텐서플로 2.3에서 experimental을 벗어나 안정 API가 되었습니다.</주석>
  34. (p849) 7번 문제 답의 마지막 항목에서 “\textbf{A}는 \textbf{A}'의 오른쪽에서 m \times n 단위 행렬 \textbf{I}_m이 추가되고 … 채워진 행렬입니다.”를 “\textbf{A}는 \textbf{A}'의 오른쪽에서 -\textbf{I}_m이 추가되고 … 채워진 행렬입니다(\textbf{I}_m은 m \times n단위 행렬).”로 정정합니다. 또한 바로 아래 A 행렬의 첫 번째 행 [\textbf{A}' \;\; \textbf{I}_m]을 [\textbf{A}' \,\, -\textbf{I}_m]으로 정정합니다.
  35. (p857) 6번 문제 답에서 2번째, 3번째 항목에 “가중치 벡터“를 “가중치 행렬“로 정정합니다.
  36. (p889) [식 C-4]의 우변의 두 항의 순서를 다음과 같이 바꿉니다.
    \sum_{i=1}^m \alpha^{(i)} - \dfrac{1}{2} \sum_{i=1}^m \sum_{j=1}^m \alpha^{(i)} \alpha^{(j)} t^{(i)} t^{(j)} \textbf{x}^{(i)^T} \textbf{x}^{(j)}
    그리고 [식 C-4] 아래 “여기서 \alpha^{(i)} \ge 0 \;\;\; i=1,2,\cdots,m 일 때”를 “여기서 \alpha^{(i)} \ge 0 \;\;\; i=1,2,\cdots,m 이고 \sum_{i=1}^m \alpha^{(i)} t^{(i)}=0 일 때”로 정정합니다.
    [식 C-4] 다음 문장에서 “이 함수를 최소화하고 … \hat{\alpha}^{(i)} \ge 0 벡터 …”를 “이 함수를 최대화하고 … \hat{\alpha}^{(i)} \ge 0이고 \sum_{i=1}^m \hat{\alpha}^{(i)} t^{(i)}=0 벡터 …”로 정정합니다.
    또한 [식 C-5] 아래에 “여기에서 n_s는 서포트 벡터의 개수입니다” 문장을 추가합니다.
  37. (p917) 첫 번째 문장 끝에 다음처럼 주석을 추가합니다. “… 그래프를 살펴보겠습니다.<주석>옮긴이_이 부록의 코드는 12장의 주피터 노트북에 포함되어 있습니다.</주석>”

TensorFlow 2.2의 사용자 정의 훈련 반복

텐서플로 2.2의 케라스 API에 train_step 메서드가 추가되었습니다. 이 메서드를 오버라이드하여 사용자 정의 훈련 반복을 케라스 모델 클래스에 통합하는 방법을 소개하는 짧은 영상을 만들었습니다. 재미있게 보세요! 🙂

TensorFlow 2.2.0 Release

텐서플로 2.2.0이 릴리스되었습니다. 주요 변경 사항은 다음과 같습니다.

  • 텐서플로 데브 서밋에 소개되었던 프로파일러가 추가되었습니다. 자세한 내용은 튜토리얼과 가이드 문서를 참고하세요.
  • 분산 환경에서 전역 배치 정규화를 지원하는 tf.keras.layers.experimental.SyncBatchNormalization 층이 추가되었습니다.
  • tf.distribute.experimental.MultiWorkerMirroredStrategy 성능이 향상되었습니다.
  • Model.train_step 메서드를 오버라이드하여 사용자 정의 훈련 루프를 만들 수 있습니다. 또한 Model.test_step, Model.predict_step을 사용해 검증과 추론 메서드도 오버라이드할 수 있습니다.

현재 코랩의 텐서플로 버전은 2.2.0-rc4입니다. 코랩의 텐서플로 버전이 2.2.0로 업데이트되었습니다. 2.2.0 버전의 자세한 변경 내용은 릴리스 노트를 참고하세요.

텐서플로 2.2.0 버전은 다음 명령으로 설치할 수 있습니다.

# for cpu and gpu
$ pip install --upgrade tensorflow
# cpu-only
$ pip install --upgrade tensorflow-cpu

‘핸즈온 머신러닝 2판’이 출간되었습니다!

오렐리앙 제롱Aurélien Géron이 쓴 아마존 베스트 셀러 “Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow 2nd Edition“을 번역한 핸즈온 머신러닝 2판이 출간되었습니다.

1판도 좋았지만 2판은 더욱 더 알차고 폭넓은 주제를 다루고 있습니다. 1판에서 아쉬웠던 비지도 학습과 텐서플로 2로 바뀌면서 변경된 내용, 새로운 신경망 구조를 가득 담고 있습니다.

번역서도 원서와 마찬가지로 풀 컬러로 인쇄됩니다. 전체 페이지는 952페이지 입니다. 무엇보다도 딥러닝을 다루는 2부의 내용이 크게 늘었기 때문입니다. 케라스 뿐만 아니라 RNN의 최근 발전을 많이 포함하고 있고 GAN을 새롭게 추가했습니다. 또한 강화 학습 챕터도 크게 증가했습니다. 한마디로 백과사전이 따로 없죠! 🙂

이 책은 온라인/오프라인 서점에서 판매 중입니다! Yes24교보문고알라딘, 한빛미디어, 전자책

  • 이 책의 주피터 노트북을 한글로 번역하여 제 깃허브에 올리고 있습니다.
  • 혼자 공부하시는 분들을 위해 유튜브에 동영상 강좌를 올리고 있습니다!
  • 이 동영상은 인프런에서도 볼 수 있습니다.