Skip to content

Latest commit

 

History

History
270 lines (234 loc) · 15.3 KB

README.md

File metadata and controls

270 lines (234 loc) · 15.3 KB

케라스로 구현하는 딥러닝, In Tensorflow 2

폴드 설명

colab_py37_k28 폴드

파이썬 3.7, 텐서플로/케라스 2.8을 지원하는 구글 콜랩에서 실행하는 코드

  • 파일명 끝에 -colab이 붙은 경우는 아래의 수정이 필요한 노트북임
from keras import dataset ==> from tensorflow.keras import dataset

cpu_only 폴드

GPU가 있지만 cpu로 돌려야 하는 경우에 사용하는 코드

  • 노트북 앞에 아래 두 줄의 코드를 추가함
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'

추천글

박재용, LG전자 책임연구원

메타버스에 대한 열광적인 관심이 있는 상황에서 인공지능은 지대한 관심을 받고 있는데 매우 실용적이고 도움이 되는 책이 출간되었습니다. 저자와 같이 소개된 많은 알고리즘을 통신과 AI융합 및 영상처리에 접목하는 연구를 했습니다. 이 책의 내용들이 연구개발의 실무적인면에 좋은 가이드가 될것입니다. 또한, 차세대 인공지능의 방향을 알려주는 나침판될것으로 판단하고 추천합니다.

성균관대 전자전기공학부 김용석 교수

대학원에서 '인문과 기술' 이라는 융합과목을 강의 하면서 기술을 잘 모르는 비개발자, 타전공자들에게도 인공지능 기술을 익히는데 도움이 되는 책이 없을까 찾고 있던 차에 좋은 책이 나와서 기쁩니다. 이 책의 7장에는 미술작품도 GAN 기술로 그려질 수 있음을 설명해 주고 있습니다. 이 책은 인공지능 기술과 타 분야와의 융합의 관점에서 일반인도 쉽게 접근 할 수 있으리라 생각 됩니다. 대학생과 직장인 그리고 인공지능을 알고 싶고 구현해 보고자 하는 일반인에게도 일독을 권합니다.

고영웅교수, 한림대 소프트웨어융합대학

이 책은 파이썬 딥러닝 라이브러리로 널리 사용되고 있는 케라스를 쉽고 체계적으로 설명한 입문서입니다. 최근에 인공지능이 널리 사용되면서 특히 딥러닝 분야에 대한 관심은 폭발적입니다. 많은 분들이 딥러닝을 어디서부터 어떻게 시작을 해야 할지 어려움을 느끼고 있는데, 이 책은 딥러닝에 입문하는 분들의 답답함을 시원하게 해소시켜줄 것이라고 생각합니다. 책에서 제공하는 다양한 딥러닝 관련 이론 및 실습 코드는 여러분들이 쉽고 빠르게 딥러닝 프로그래밍을 배우는데 큰 도움을 줄 것입니다.

최준일교수, KAIST

이 책은 특별한 배경지식 없이도 읽을 수 있는, 그러면서도 구성이 매우 알찬 딥러닝 입문서입니다. 통신, 화학, 컴퓨터 등 다양한 방면에서의 오랜 경험이 있으신 김성진 박사님이 아니시면 이렇게 쉬운 입문서를 쓰는 것은 매우 어려운 일이라 생각합니다. 이 책에 나와있는 다양한 예제를 따라하다보면 딥러닝에 대한 깊은 이해 없이도 아주 강력한 딥러닝 툴을 손쉽게 사용할 수 있습니다. 다양한 방면에 딥러닝이 사용되고 있는 지금, 이 책을 통해 딥러닝의 세계에 빠져보세요.

김상훈, Meta Inventor LLC 대표, 미국 변리사

인공지능과 딥 러닝 기술이 적용되지 않는 분야가 없을 정도로, 데이터 사이언스는 이제 첨단 기술을 넘어 일상 생활로 파고 들었습니다. 이 책은 여러 분야를 넘나들며 저자가 다년간 산학연에서 쌓은 실전 노하우를, 친절하고 재미있는 설명과 피부에 와 닿는 예제로 풀어냈습니다. 입문자는 물론 시간에 쫓기는 현장의 프로그래머들에게도 큰 도움이 되리라 확신합니다. 저는 미국 변리사로서 발명가, 프로그래머들과 토론을 하고 특허화 하는데 코드의 이해가 중요한데, 이 책으로 큰 도움을 받았습니다.

송진영 데이터분석가, 빅인사이트

학교에서 경영학을 전공했습니다. 기술경영 관련 과목을 수강할 때 현재 기술 관련 아티클들, 트렌드를 담은 논문 등을 찾고 정리하는 일을 많이 하며 기술에 대한 이해도가 높아졌다고 착각한 적이 있었습니다. 하지만 실제 코딩을 배워보고 기술을 배워보면서 굉장히 큰 착각이었다는 걸 깨달았습니다. 개략적인 설명을 이해하는 것도 중요하지만, 실제로 만져보고 다뤄보는 것만큼 이해도를 높이는 일은 없을거 같습니다. 인공지능 실무를 하든 실무를 하지 않든 만약 인공지능이 궁금하다면, 그냥 일단 이 책을 따라 해보면서 이해도를 높여보는건 어떨까요?

김성철 (전) IBM Watson Research 연구원, PsychoGenics 책임 데이터 과학자

지금 미국에서는 많은 스타트업 기업들이 인공지능에 기반한 기술을 이용하여 시작되고 있습니다. 또한 기존의 전통적인 많은 기업들도 자신의 핵심 사업에 인공 지능을 활용하기 위해 많은 인력과 시간을 쏟아붇고 있는 상황입니다. 이러한 때에 누구나 쉽게 딥러닝에 대해 접할 수 있고 또한 그 내용을 간단히 사용해 볼 수 있게 정리한 이 책의 가치가 더욱 빛나는 것 같습니다. 처음 딥러닝을 시작하는 분들이나 혹은 실무에서 많이 사용하고 있지만, 다시 한번 내용을 정리하고 싶은 분들에게 유용한 책이 될 것입니다.

김민수 Ph.D. 신한은행/신한AI 상무

한국어로 작성된 딥러닝 서적들이 봇물 터지듯이 나오던 시기에 '3분 딥러닝' 시리즈는 AI 입문자들에게 등대와 같은 역할을 했습니다. 그 중에서도 저자의 '케라스맛'이 입문자들이 큰 문턱들을 넘을 때 든든한 길잡이가 되어 준 것을 여러 차례 목격했습니다. 개정판에서 추가된 강화학습과 양자AI은 여전히 개념 이해조차 쉽지 않지만, 코딩셰프의 레시피를 따라 하시면 꽤 많은 문턱들을 지나가실 수 있을 것 입니다. 많은 분들이 본 개정판을 통해 AI의 현재와 미래에 대한 인사이트를 얻게 되시길 바랍니다.

어경오, 딥러닝에 관심 많은 직장인

평소 딥러닝에 관심이 많았던 직장인입니다. 유튜브나 유료 인터넷 강의, 블로그 등을 봐도 막연하게만 알게되었던 부분들이 훨씬 명확하게 이해가 되었습니다. 단순히 잘 나오는 결과를 보여주는 참고서가 아니라, 헷갈릴 수 있는 부분들을 명확하게 짚고 가는 게 너무 좋았습니다! 개인 개발을 위해 대학원 등록도 고민할 정도로 방향이 잡히지 않았었는데, 이 책을 읽은 후 나침반을 들고 북극성을 찾은 기분입니다. 처음부터 끝까지 정독을 해도 좋고, 필요한 부분을 찾아 봐도 좋을 것 같습니다.

책표지

책표지 - 케라스로 구현하는 딥러닝

0장. 프롤로그 __0.1 인공지능과 인공신경망 ____0.1.1 인공지능의 역사 ____0.1.2 머신러닝과 딥러닝 ____0.1.3 인공신경망 개요 __0.2 케라스 소개 ____0.2.1 케라스 2의 주요 특징

1장. 케라스 시작하기 __1.1 우분투에서 케라스 설치하기 ____1.1.1 아나콘다 파이썬 배포판 설치 ____1.1.2 아나콘다를 이용한 케라스 설치 ____1.1.3 케라스에서 GPU 사용을 위한 CUDA/cuDNN 설치 __1.2 윈도우에서 케라스 설치하기 ____1.2.1 아나콘다 파이썬 배포판 설치 ____1.2.2 아나콘다를 이용한 케라스 설치 __1.3 주피터 설치하기 __1.4 케라스 사용하기 ____1.4.1 실습 내용 소개 ____1.4.2 텍스트 모드 실습 ____1.4.3 주피터 모드 실습 __1.5 케라스 기능 __1.6 마치며

2장. 케라스로 구현하는 ANN __2.1 ANN 원리 ____2.1.1 ANN 개념 ____2.1.2 ANN 구조 ____2.1.3 ANN 활용 ____2.1.4 ANN 구현 방법 및 단계 __2.2 필기체를 구분하는 분류 ANN 구현 ____2.2.1 분류 ANN을 위한 인공지능 모델 구현 ____2.2.2 분류 ANN에 사용할 데이터 가져오기 ____2.2.3 분류 ANN 학습 결과의 그래프 구현 ____2.2.4 분류 ANN 학습 및 성능 분석 __2.3 결과 데이터를 예측하는 회귀 ANN 구현 ____2.3.1 회귀 ANN 모델링 ____2.3.2 학습과 평가용 데이터 가져오기 ____2.3.3 회귀 ANN 학습 결과 그래프 구현 ____2.3.4 회귀 ANN 학습 및 성능 분석 __2.4 마치며

3장. 케라스로 구현하는 DNN __3.1 DNN 원리 ____3.1.1 DNN 개념과 구조 ____3.1.2 경사도 소실 문제와 ReLU 활성화 함수 ____3.1.3 DNN 구현 단계 __3.2 필기체를 분류하는 DNN 구현 ____3.2.1 기본 매개변수 설정 ____3.2.2 DNN 모델 구현 ____3.2.3 데이터 준비 ____3.2.4 학습 및 성능 평가 __3.3 컬러 이미지를 분류하는 DNN 구현 ____3.3.1 데이터 가져오기 ____3.3.2 DNN 모델링 ____3.3.3 학습 효과 분석 ____3.3.4 학습 및 성능 평가 __3.4 마치며

4장 케라스로 구현하는 CNN __4.1 CNN 원리 __4.2 필기체를 분류하는 CNN 구현 ____4.2.1 분류 CNN 모델링 ____4.2.2 분류 CNN을 위한 데이터 준비 ____4.2.3 분류 CNN 학습 효과 분석 ____4.2.4 분류 CNN 학습 및 성능 평가 __4.3 컬러 이미지를 분류하는 CNN 구현 ____4.3.1 분류 CNN 패키지 가져오기 ____4.3.2 분류 CNN 모델링 ____4.3.3 분류 CNN을 위한 데이터 준비 ____4.3.4 분류 CNN의 학습 및 성능 평가를 위한 머신 클래스 ____4.3.5 분류 CNN의 학습 및 성능 평가 수행 __4.4 마치며

5장 케라스로 구현하는 RNN __5.1 RNN 원리 ____5.1.1 RNN의 개념과 구조 ____5.1.2 LSTM 구조 및 동작 __5.2 문장을 판별하는 LSTM 구현 ____5.2.1 라이브러리 패키지 가져오기 ____5.2.2 데이터 준비 ____5.2.3 모델링 ____5.2.4 학습 및 성능 평가 __5.3 시계열 데이터를 예측하는 LSTM 구현 ____5.3.1 라이브러리 패키지 가져오기 ____5.3.2 코드 실행 및 결과 보기 ____5.3.3 학습하고 평가하기 ____5.3.4 LSTM 시계열 데이터 회귀 모델링 ____5.3.5 데이터 가져오기 __5.4 마치며

6장 케라스로 구현하는 AE __6.1 AE 원리 __6.2 완전 연결 계층을 이용한 AE 구현 ____6.2.1 완전 연결 계층 AE 모델링 ____6.2.2 데이터 준비 ____6.2.3 학습 효과 분석 ____6.2.4 완전 연결 계층 AE의 동작 확인 ____6.2.5 학습 및 성능 평가 __6.3 합성곱 계층을 이용한 AE 구현 ____6.3.1 합성곱 AE 모델링 ____6.3.2 데이터 준비 및 학습 효과 분석 ____6.3.3 합성곱 AE 결과 시각화 ____6.3.4 합성곱 AE 학습 및 성능 평가 __6.4 마치며

7장. 케라스로 구현하는 GAN __7.1 GAN 원리 ____7.1.1 GAN의 목적과 개념 ____7.1.2 GAN의 구조 ____7.1.3 GAN의 동작 원리 ____7.1.4 GAN의 동작 사례 __7.2 확률분포 생성을 위한 완전 연결 계층 GAN 구현 ____7.2.1 패키지 가져오기 ____7.2.2 데이터 생성 클래스 만들기 ____7.2.3 GAN 모델링 ____7.2.4 머신 구현하기 ____7.2.5 코드 수행과 결과 보기 __7.3 필기체를 생성하는 합성곱 계층 GAN 구현 ____7.3.1 공통 패키지 가져오기 ____7.3.2 사용자 정의 손실 함수 만들기 ____7.3.3 합성곱 계층 GAN 모델링 ____7.3.4 합성곱 계층 GAN 학습하기 ____7.3.5 합성곱 계층 GAN 수행하기 __7.4 마치며

8장 케라스로 구현하는 UNET __8.1 UNET 원리 __8.2 UNET을 이용한 컬러 복원 처리 ____8.2.1 패키지 가져오기 ____8.2.2 UNET 모델링 ____8.2.3 데이터 준비 ____8.2.4 UNET 처리 그래프 그리기 ____8.2.5 UNET 학습 및 결과 확인 __8.3 마치며

〈심화 편〉

9장 케라스 확장 기능 __9.1 이미지 데이터 증강하기 ____9.1.1 응용 코드 구현 ____9.1.2 세부 모듈 구현 __9.2 미리 학습한 모델 사용하기 ____9.2.1 응용 코드 구현 ____9.2.2 세부 모듈 구현 __9.3 간단한 신규 계층 만들기 ____9.3.1 Lambda 계층이란? ____9.3.2 파이썬 Lambda 기능 이용 ____9.3.3 Lambda 계층 전용 함수 이용 ____9.3.4 백엔드 함수 이용 ____9.3.5 엔진 전용 함수 이용 ____9.3.6 케라스의 확장 기능 이용 __9.4 학습 가능한 신규 계층 만들기 ____9.4.1 관련 패키지 가져오기 ____9.4.2 새로운 계층의 클래스 만들기 ____9.4.3 사용 데이터 준비하기 ____9.4.4 신규 계층이 포함된 모델링 만들기 ____9.4.5 모델의 학습과 성능 평가 __9.5 케라스의 확장된 기능 이용하기 ____9.5.1 텐서플로 가져오기와 내장 케라스 사용하기 ____9.5.2 완전 연결층 인공신경망 모델링 ____9.5.3 데이터 준비 ____9.5.4 학습 진행 및 효과 분석 단계 ____9.5.5 주 함수 구현 및 실행 __9.6 마치며

10장. 케라스로 구현하는 RL __10.1 강화학습 원리 ____10.1.1 강화학습의 정의 및 주요 용어 ____10.1.2 강화학습 최적화 기본 방법 __10.2 정책 반복법을 이용하는 강화학습 사례 ____10.2.1 Gym을 이용한 강화학습 환경 구성하기 ____10.2.2 무작위 행동에 따른 상태, 보상 그리고 종료 여부 관찰하 기 ____10.2.3 반환값 구하기 ____10.2.4 가치함수 구하기 ____10.2.5 행동가치함수 구하기 ____10.2.6 새로운 정책 구하기 ____10.2.7 새로운 정책 사용하기 __10.3 Q-Learning을 이용하는 강화학습 사례 ____10.3.1 패키지 가져오기 및 초기화 ____10.3.2 주어진 정책에 따른 시행 함수 만들기 ____10.3.3 Q-learning 만들기 ____10.3.4 Q-learning 실행하기 __10.4 딥러닝 기반 Q-Learning을 이용하는 강화학습 ____10.4.1 관련 패키지 가져오기 ____10.4.2 Q 함수를 위한 뉴럴넷 구성하기 ____10.4.3 텐서플로 기능을 이용한 Q 함수 뉴럴넷 학습 코드 작성 ____10.4.4 객체지향 방식으로 Q 함수 뉴럴넷 모델을 학습시키기 ____10.4.5 추가 Q 함수 뉴럴넷 모델을 이용한 학습 ____10.4.6 시도와 동시에 학습이 진행되게 만들기 __10.5 마치며

11장. 케라스로 구현하는 QAI __11.1 양자컴퓨팅과 양자인공지능의 기초 ____11.1.1 양자비트 상태 표현과 측정 ____11.1.2 단일 양자비트 연산자 ____11.1.3 다중 양자비트 표현 및 연산 ____11.1.4 블로흐 구면과 지정 양자상태 회전 __11.2 양자컴퓨팅 알고리즘 구현 ____11.2.1 기본 양자회로 만들기 ____11.2.2 입력을 반전시키는 양자회로 ____11.2.3 두 상태를 중첩하는 양자회로 ____11.2.4 두 개 양자비트를 입력으로 하는 CNOT 연산 ____11.2.5 벨 상태 만들기 __11.3 양자인공지능 알고리즘 구현 ____11.3.1 매개변수가 있는 가변양자회로 알고리즘 ____11.3.2 하이브리드 양자인공지능 학습하기 __11.4 마치며

감사의 말씀

모태신앙으로 알게 된 주님의 힘이 없었다면 이 책의 출판은 불가능했을 것입니다. 다음으로 부모님께서 저를 나아주시고 길러 주셨기에 이 책이 있습니다. 형제자매의 우애로 여기까지 왔습니다. 무엇보다 가족의 따뜻함이 많은 힘이 되었습니다. 직장 동료들의 도움은 늘 저에게 많은 힘과 지식의 근원이 되었습니다. 지도교수님, 대학 동료, 선후배, 그리고 연구실 멤버들의 도움도 많이 받았습니다. 더불어 이 책이 출판될 때까지 음으로 양으로 도움주신 모든 분들께 진심으로 감사드립니다.