시작하세요! 텐서플로 2.0 프로그래밍

기초 이론부터 실전 예제까지 한 번에 끝내는 머신러닝, 딥러닝 핵심 가이드

텐서플로 2.0과 함께 머신러닝/딥러닝 기초를 다질 수 있는 가장 좋은 선택입니다!

텐서플로는 전 세계적으로 가장 널리 쓰이는 딥러닝 프레임워크입니다. 텐서플로 2.0은 기존 1.x 버전의 불편했던 문법을 개선하고 tf.keras를 중심으로 고수준 API를 통합해서 처음 접하는 사용자도 빠르게 적응할 수 있습니다.

이 책은 모든 예제 코드가 클라우드 환경의 구글 코랩(Google Colab)에 작성돼 있기 때문에 별도의 설치 과정이 필요하지 않고 인터넷만 연결돼 있으면 즉시 실행이 가능합니다. 예제 코드는 최신 버전의 파이썬과 텐서플로를 사용하며, 다양한 데이터세트와 딥러닝의 거의 모든 분야를 다룹니다.

 

★ 이 책에서 다루는 내용 ★

  • 텐서플로 설치
  • 단순한 뉴런 만들기
  • 회귀, 분류
  • 컨볼루션 신경망(CNN)
  • 순환 신경망(RNN)
  • 전이학습(Transfer Learning)
  • 오토인코더(AutoEncoder)
  • 강화학습(Reinforcement Learning)

 

추천사

만약 누군가 딥러닝에 대한 도서를 추천해 달라고 한다면 저는 김환희 님의 《시작하세요! 텐서플로 2.0 프로그래밍》을 권하고자 합니다. 이 책은 이번에 새로 나온 텐서플로 2.0에 대해 시작부터 끝까지 쉬운 코드로 따라올 수 있도록 잘 구성돼 있습니다. 특히나 텐서플로가 2.0 버전에서 문법이 크게 바뀌었기 때문에 텐서플로를 처음 접하는 독자 분들께 강력하게 추천해 드립니다. 김환희 님은 게임 업계에서 다양한 딥러닝 프로젝트를 수행하신 경험을 가지고 계십니다. 이러한 경험들이 이 책에 충실히 담겨 있어 독자 여러분들께 매우 유용한 책이 되리라 확신합니다.

— 강신진, 홍익대학교 교수

 

도서 상세 이미지

김환희

항상 꿈꿔왔던 게임업계에서 9년째 즐겁게 일하는 중이다. 넥슨을 거쳐 현재는 엔씨소프트에서 게임 기획과 툴 제작, R&D를 하고 있다. 깃허브 블로그(https://greentec.github.io/)에 셰이더, PCG, 강화학습 등의 주제에 대해 인터랙티브 콘텐츠를 포함한 글을 올리고 있다.

  • ▣ 01장: 텐서플로 2.0 소개
    • 1.1 텐서플로란?
    • 1.2 2.0 버전의 주요 변화들
      • 1.2.1 API 정리
      • 1.2.2 즉시 실행 모드(eager execution)
      • 1.2.3 세션 대신 함수(functions, not sessions)
      • 1.2.4 tf.keras
      • 1.2.5 TPU 지원
    •  
  • ▣ 02장: 텐서플로 2.0 설치
    • 2.1 윈도우
      • 2.1.1 기존 엔비디아 드라이버 제거
      • 2.1.2 CUDA, cuDNN 설치
      • 2.1.3 아나콘다 설치
      • 2.1.4 텐서플로 2.0 설치
    • 2.2 macOS
      • 2.2.1 아나콘다 설치
      • 2.2.2 텐서플로 2.0 설치
    •  
  • ▣ 03장: 텐서플로 2.0 시작하기
    • 3.1 Hello World
    • 3.2 Hello 텐서플로 2.0
    • 3.3 텐서플로 기초
      • 3.3.1 난수 생성
      • 3.3.2 뉴런 만들기
      • 3.3.3 첫 번째 신경망 네트워크: AND
      • 3.3.4 두 번째 신경망 네트워크: OR
      • 3.3.5 세 번째 신경망 네트워크: XOR
    • 3.4 시각화 기초
      • 3.4.1 matplotlib.pyplot을 이용한 그래프 그리기
      • 3.4.2 2-레이어 XOR 네트워크의 정보 시각화
    • 3.5 정리
    •  
  • ▣ 04장: 회귀
    • 4.1 선형 회귀
    • 4.2 다항 회귀
    • 4.3 딥러닝 네트워크를 이용한 회귀
    • 4.4 보스턴 주택 가격 데이터세트
    • 4.5 정리
    •  
  • ▣ 05장: 분류
    • 5.1 이항 분류
    • 5.2 다항 분류
    • 5.3 Fashion MNIST
    • 5.4 정리
    •  
  • ▣ 06장: 컨볼루션 신경망
    • 6.1 특징 추출
    • 6.2 주요 레이어 정리
      • 6.2.1 컨볼루션 레이어
      • 6.2.2 풀링 레이어
      • 6.2.3 드롭아웃 레이어
    • 6.3 Fashion MNIST 데이터세트에 적용하기
    • 6.4 퍼포먼스 높이기
      • 6.4.1 더 많은 레이어 쌓기
      • 6.4.2 이미지 보강
    • 6.5 정리
    •  
  • ▣ 07장: 순환 신경망
    • 7.1 순환 신경망의 구조
    • 7.2 주요 레이어 정리
    • 7.2.1 SimpleRNN 레이어
    • 7.2.2 LSTM 레이어
    • 7.2.3 GRU 레이어
    • 7.2.4 임베딩 레이어
    • 7.3 긍정, 부정 감성 분석
    • 7.4 자연어 생성
      • 7.4.1 단어 단위 생성
      • 7.4.2 자소 단위 생성
    • 7.5 정리
    •  
  • ▣ 08장: 사전 훈련된 모델 다루기
    • 8.1 텐서플로 허브
    • 8.2 전이 학습
      • 8.2.1 모델의 일부를 재학습시키기
      • 8.2.2 특징 추출기
    • 8.3 신경 스타일 전이
      • 8.3.1 컨볼루션 신경망을 사용한 텍스처 합성
      • 8.3.2 컨볼루션 신경망을 사용한 신경 스타일 전이
    • 8.4 정리
    •  
  • ▣ 09장: 오토인코더
    • 9.1 인코더와 디코더, 잠재 변수
    • 9.2 MNIST 데이터세트에 적용하기
    • 9.3 클러스터링
      • 9.3.1 K-평균 클러스터링
      • 9.3.2 t-SNE
    • 9.4 초해상도 이미지 얻기
    • 9.5 이미지 분할
    • 9.6 정리
    •  
  • ▣ 10장: 강화학습
    • 10.1 신경망으로 경험 학습하기
    • 10.2 큐러닝
    • 10.3 딥 큐러닝 네트워크
    • 10.4 정리
    • 맺음말

주요 수정 사항

  • [2020.02.01] 257쪽, 예제 8.8에서 캐글에서 데이터세트를 받아오는 부분이 캐글 측의 데이터 구조 변경으로 수정됐습니다. 구글 코랩, 깃허브

  • [2020.04.08] 263쪽, 예제 8.16의 OOM(Out Of Memory)이 발생하는 문제는 구글 코랩이 유료 버전을 런칭하면서 대용량 RAM 모드를 무료 버전에서 지원하지 않기 때문에 발생한 문제입니다. 해당 부분을 수정한 노트북 파일을 코랩깃허브에 올려놓았습니다.


  • 83쪽, 예제 4.5에서 compute_loss() 함수의 첫 번째 줄

    y_pred = a * X**2 + b * X + c
    

    ==>

    y_pred = a * X*X + b * X + c
    
  • 85쪽, 예제 4.6에서 compute_loss() 함수의 첫 번째 줄

    y_pred = a * X**3 + b * X**2 + c * X + d
    

    ==>

    y_pred = a * X*X*X + b * X*X + c * X + d
    
  • 85쪽, 예제 4.6에서 compute_loss() 함수 아래의 for 문 내 2번째 줄

    optimizer.minimize(compute_loss, var_list=[a,b,c])
    

    ==>

    optimizer.minimize(compute_loss, var_list=[a,b,c,d])
    
  • 95쪽, 예제 4.12의 1~2줄

    x_mean = train_X.mean()
    x_std = train_X.std()
    

    ==>

    x_mean = train_X.mean(axis=0)
    x_std = train_X.std(axis=0)
    
  • 95쪽, 예제 4.12의 8~9줄

    y_mean = train_Y.mean()
    y_std = train_Y.std()
    

    ==>

    y_mean = train_Y.mean(axis=0)
    y_std = train_Y.std(axis=0)
    
  • 116쪽, 예제 5.8의 9번째 줄

    model.compile(optimizer=tf.keras.optimizers.Adam(lr=0.07), loss='sparse_categorical_crossentropy', metrics=['accuracy'])
    

    ==>

    model.compile(optimizer=tf.keras.optimizers.Adam(lr=0.07), loss='categorical_crossentropy', metrics=['accuracy'])
    
  • 126쪽, 예제 5.15의 2번째 줄

    wine_norm = (wine - wine.min()) / (wine.max() - wine.min())  
    

    ==>

    wine_backup = wine.copy()
    wine_norm = (wine - wine.min()) / (wine.max() - wine.min())
    wine_norm['new_quality'] = wine_backup['new_quality']
    
  • 127쪽, 예제 5.16의 8번째 줄

    model.compile(optimizer=tf.keras.optimizers.Adam(lr=0.07), loss='categorical_crossentropy', metrics=['accuracy'])
    

    ==>

    model.compile(optimizer=tf.keras.optimizers.Adam(lr=0.003), loss='categorical_crossentropy', metrics=['accuracy'])
    
  • 128쪽, 예제 5.17의 14번째 줄

    plt.ylim(0.7, 1)
    

    ==>

    plt.ylim(0.5, 0.7)