텐서플로로 하는 딥러닝 기초와 응용 [텐서플로 2.x 구조 배우기]
- 원서명Hands-On Neural Networks with TensorFlow 2.0: Understand TensorFlow, from static graph to eager execution, and design neural networks (ISBN 9781789615555)
- 지은이파올로 갈리오니(Paolo Galeone)
- 옮긴이김창엽, 최민환
- ISBN : 9791161754741
- 30,000원
- 2020년 11월 30일 펴냄 (절판)
- 페이퍼백 | 408쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 데이터 과학
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/nn-tensorflow2
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
머신러닝과 신경망에 대한 이론과 텐서플로 1.x, 2.x 버전의 차이점을 다루는 것으로 시작한다. 이어서 신경망을 쉽게 구현할 수 있도록 데이터 입력 파이프라인을 구성하는 방법과 Estimator API 등에 대해서 설명한다. 최근 딥러닝 분야의 트렌드인 전이학습을 쉽게 할 수 있도록 텐서플로 허브를 활용하는 방법과 그 적용에 대해 다룬 뒤, 객체 탐지, 시맨틱 분할, GAN 등 딥러닝의 주요 응용 분야를 소개한다. 마지막으로 작성한 모델을 실무에 적용하는 방법을 소개하는 것으로 마친다. 텐서플로의 근간이 되는 큰 구조를 소개하고 텐서플로 2.x에서 변경된 여러 기능을 통해 신경망을 쉽게 개발하는 데 필요한 내용들을 예제를 통해 배울 수 있도록 구성돼 있다.
이 책에서 다루는 내용
■ 머신러닝과 신경망 기법 파악 후 과제 해결
■ 개발 속도를 높이기 위한 TF 2.0의 새로운 기능 적용
■ 텐서플로 데이터셋(tfds)와 tf.data API를 사용해 고효율 데이터 입력 파이프라인 구축
■ 텐서플로 허브로 전이학습 및 미세 조정 수행
■ 객체 탐지 및 시맨틱 분할 문제 해결을 위한 네트워크 정의와 훈련
■ 이미지 생성과 데이터 분포를 생성하는 GAN 훈련
■ SavedModel 파일 형식을 사용한 모델이나 일반 연산 그래프 실무 투입
이 책의 대상 독자
텐서플로 구조와 새로운 특징이 궁금한 동시에 신경망을 다루는 데이터 과학자, 머신러닝 개발자, 딥러닝 연구자, 기초 통계 배경지식을 가진 개발자를 대상으로 한다. 이 책을 최대한 활용하려면 파이썬 프로그래밍 언어 관련 실무 지식이 필요하다.
이 책의 구성
1장, ‘머신러닝이란?’에서는 머신러닝의 기초를 다룬다. 지도, 비지도, 준지도학습이 무엇이며 이러한 구분이 왜 중요한지 살펴본다. 또한 데이터 파이프라인을 만드는 방법, 알고리즘의 성능을 측정하는 방법, 결과를 검증하는 방법을 배운다.
2장, ‘신경망과 딥러닝’에서는 신경망에 초점을 맞춘다. 머신러닝 모델의 강점과 네트워크 학습 방법, 실제로 모델 파라미터 업데이트가 어떻게 수행되는지를 배우게 된다. 이 장을 마치면 역전파(backpropagation)와 네트워크 파라미터 업데이트 내부를 이해하게 된다. 도전적인 과제를 해결하는 데 심층 신경망 구조가 왜 필요한지 알게 될 것이다.
3장, ‘텐서플로 그래프 아키텍처’에서는 1.x 버전과 2.x 버전 사이에 공유되는 텐서플로 구조를 다룬다.
4장, ‘텐서플로 2.0 아키텍처’에서는 텐서플로 1.x와 2.x의 차이를 보여준다. 이 두 가지 버전을 모두 사용해 간단한 머신러닝 모델을 개발해본다. 두 버전의 공통적인 특징을 이해하게 될 것이다.
5장, ‘효율적인 데이터 입력 파이프라인 및 Estimator API’에서는 tf.data API를 사용해 전체 데이터 입력 파이프라인을 정의하는 방법과 tf.estimator API를 사용해 실험을 정의하는 방법을 다룬다. tf.data와 tf.io.gfile API의 모든 기능을 활용해 복잡하고 효율적인 입력 파이프라인을 만들 수 있게 될 것이다.
6장, ‘텐서플로 허브를 사용한 이미지 분류’에서는 케라스 API와의 긴밀한 통합을 활용한 텐서플로 허브를 사용해 전이(fine-tuning)학습 및 미세 조정을 쉽게 수행하는 방법을 다룬다.
7장, ‘객체 탐지 소개’에서는 분류기를 확장하는 방법을 다루며, 이를 경계 상자의 좌표를 회귀하는 객체 탐지기로 만들고 더욱 복잡한 객체 탐지 구조에 관해 소개한다.
8장, ‘시맨틱 분할과 사용자 정의 데이터셋’에서는 빌더 시맨틱 분할 네트워크를 구현하는 방법과 이러한 종류의 작업에 관한 데이터셋을 준비하는 방법, 모델을 훈련하고 성능을 측정하는 방법을 다룬다. U-Net을 사용해 시맨틱 분할 문제를 해결해본다.
9장, ‘생성적 적대 신경망’에서는 이론적이고 실무적인 관점에서 GAN을 다룬다. 생성 모델의 구조와 텐서플로 2.0을 사용해 적대적 훈련을 쉽게 수행할 수 있는 방법을 이해하게 될 것이다.
10장, ‘모델을 실무에 적용하기’에서는 훈련된 모델을 완전한 애플리케이션으로 전환하는 방법을 다룬다. 훈련된 모델을 지정된 표현(SavedModel)으로 내보내기하고, 이를 완전한 애플리케이션으로 사용하는 방법도 다룬다. tfgo 라이브러리를 사용해 파이썬 내부, TensorFlow.js, Go에서도 훈련된 모델을 내보내고 활용할 수 있다.
목차
목차
- 1부. 신경망 기초
- 1장. 머신러닝이란?
- 데이터셋의 중요성
- n차원 공간
- 차원의 저주
- 지도학습
- 거리와 유사도–k-NN 알고리즘
- 모수 모델
- 모델의 성능 측정–평가 지표
- 비지도학습
- 준지도학습
- 요약
- 실습
- 데이터셋의 중요성
- 2장. 신경망과 딥러닝
- 신경망
- 생물학적 뉴런
- 인공 뉴런
- 완전 연결 레이어
- 활성화 함수
- 손실함수
- 파라미터 초기화
- 최적화
- 경사하강법
- 경사하강법 최적화 알고리즘
- 역전파와 자동 미분
- 컨볼루션 신경망
- 컨볼루션 연산자
- 2D 컨볼루션
- 볼륨 간 2D 컨볼루션
- 1×1×D 컨볼루션
- 일반화
- 드롭아웃
- 데이터 증강
- 얼리스타핑
- 배치 정규화
- 요약
- 실습
- 신경망
- 2부. 텐서플로 기초
- 3장. 텐서플로 그래프 아키텍처
- 환경 설정
- 텐서플로 1.x 환경
- 텐서플로 2.0 환경
- 데이터 흐름 그래프
- 주요 구조–tf.Graph
- 그래프 정의–tf.Operation부터 tf.Tensor까지
- 그래프 배치–tf.device
- 그래프 실행–tf.Session
- 정적 그래프의 변수
- 모델 정의와 훈련
- tf.layers 기반 모델 정의
- 자동 미분–손실과 옵티마이저
- 파이썬을 활용한 그래프 다루기
- 플레이스홀더에 전달
- 요약 기록
- 모델 파라미터 저장과 모델 선택
- 요약
- 실습
- 환경 설정
- 4장. 텐서플로 2.0 아키텍처
- 프레임워크 다시 배우기
- 케라스 프레임워크와 모델
- 순차 API
- 함수 API
- 서브클래스 기법
- 즉시 실행과 새로운 기능들
- 베이스라인 예제
- 세션이 아닌 함수
- 더 이상의 전역 변수는 없다
- 제어 흐름
- GradientTape
- 사용자 정의 훈련 루프
- 모델 상태 저장과 복원
- 요약과 평가 지표
- 오토그래프
- 코드베이스 마이그레이션
- 요약
- 실습
- 5장. 효율적인 데이터 입력 파이프라인 및 Estimator API
- 효율적인 데이터 입력 파이프라인
- 입력 파이프라인 구조
- tf.data.
- 성능 최적화
- 데이터셋 구축
- 데이터 증강
- 텐서플로 데이터셋–tfds
- 케라스 통합
- 즉시 실행 통합
- Estimator API
- 데이터 입력 파이프라인
- 사용자 정의 Estimator
- 사전 정의 Estimator
- 케라스 모델 사용하기
- Canned Estimator 활용
- 요약
- 실습
- 효율적인 데이터 입력 파이프라인
- 3부. 신경망의 응용 분야
- 6장. 텐서플로 허브를 사용한 이미지 분류
- 데이터 수집
- 전이학습
- 텐서플로 허브
- 피처 추출기로 Inception v3 사용
- 모델에 데이터 적용
- 모델 작성–hub.KerasLayer
- 훈련과 평가
- 훈련 속도
- 미세 조정
- 미세 조정 시기
- 텐서플로 허브 통합
- 훈련 및 평가
- 훈련 속도
- 요약
- 실습
- 7장. 객체 탐지 소개
- 데이터 수집
- 객체 지역화
- 회귀 문제로서의 지역화
- Intersection over Union
- 평균 정밀도
- mAP
- 훈련 스크립트 개선
- 분류와 지역화
- 멀티태스크 러닝
- 더블 헤드 네트워크
- 앵커 기반 탐지기
- 앵커 상자
- 요약
- 실습
- 8장. 시맨틱 분할 및 사용자 정의 데이터셋 빌더
- 시맨틱 분할
- 문제점
- 디컨볼루션–전치 컨볼루션
- U - Net 아키텍처
- 텐서플로 DatasetBuilder 만들기
- 계층적 구조
- 데이터셋 클래스와 DatasetInfo
- 데이터셋 분할
- 예제 생성
- 빌더 사용하기
- 모델 훈련과 평가
- 데이터 준비
- 훈련 루프와 케라스 콜백
- 평가와 추론
- 요약
- 실습
- 시맨틱 분할
- 9장. 생성적 적대 신경망
- GAN과 해당 애플리케이션의 이해
- 가치함수
- 비포화 가치함수
- 모델 정의와 훈련 단계
- GAN 응용 분야
- 무조건부 GAN
- 데이터 준비
- 생성기 정의
- 판별기 정의
- 손실함수 정의
- 무조건부 GAN의 적대적 훈련 프로세스
- 조건부 GAN
- 조건부 GAN에 관한 데이터 가져오기
- 조건부 GAN에서 생성기 정의
- 조건부 GAN에서 판별기 정의
- 적대적 훈련 과정
- 요약
- 실습
- GAN과 해당 애플리케이션의 이해
- 10장. 모델을 실무에 적용하기
- SavedModel 직렬화 형식
- 기능
- 케라스 모델로 SavedModel 생성하기
- 일반 함수를 SavedModel로 변환하기
- 파이썬 배포
- 일반 연산 그래프
- 케라스 모델
- 플랫 그래프
- 지원하는 배포 플랫폼
- TensorFlow.js
- Go 바인딩과 tfgo
- 요약
- 실습
- SavedModel 직렬화 형식
- 1부. 신경망 기초
- 1장. 머신러닝이란?
- 데이터셋의 중요성
- n차원 공간
- 차원의 저주
- 지도학습
- 거리와 유사도–k-NN 알고리즘
- 모수 모델
- 모델의 성능 측정–평가 지표
- 비지도학습
- 준지도학습
- 요약
- 실습
- 데이터셋의 중요성
- 2장. 신경망과 딥러닝
- 신경망
- 생물학적 뉴런
- 인공 뉴런
- 완전 연결 레이어
- 활성화 함수
- 손실함수
- 파라미터 초기화
- 최적화
- 경사하강법
- 경사하강법 최적화 알고리즘
- 역전파와 자동 미분
- 컨볼루션 신경망
- 컨볼루션 연산자
- 2D 컨볼루션
- 볼륨 간 2D 컨볼루션
- 1×1×D 컨볼루션
- 일반화
- 드롭아웃
- 데이터 증강
- 얼리스타핑
- 배치 정규화
- 요약
- 실습
- 신경망
- 2부. 텐서플로 기초
- 3장. 텐서플로 그래프 아키텍처
- 환경 설정
- 텐서플로 1.x 환경
- 텐서플로 2.0 환경
- 데이터 흐름 그래프
- 주요 구조–tf.Graph
- 그래프 정의–tf.Operation부터 tf.Tensor까지
- 그래프 배치–tf.device
- 그래프 실행–tf.Session
- 정적 그래프의 변수
- 모델 정의와 훈련
- tf.layers 기반 모델 정의
- 자동 미분–손실과 옵티마이저
- 파이썬을 활용한 그래프 다루기
- 플레이스홀더에 전달
- 요약 기록
- 모델 파라미터 저장과 모델 선택
- 요약
- 실습
- 환경 설정
- 4장. 텐서플로 2.0 아키텍처
- 프레임워크 다시 배우기
- 케라스 프레임워크와 모델
- 순차 API
- 함수 API
- 서브클래스 기법
- 즉시 실행과 새로운 기능들
- 베이스라인 예제
- 세션이 아닌 함수
- 더 이상의 전역 변수는 없다
- 제어 흐름
- GradientTape
- 사용자 정의 훈련 루프
- 모델 상태 저장과 복원
- 요약과 평가 지표
- 오토그래프
- 코드베이스 마이그레이션
- 요약
- 실습
- 5장. 효율적인 데이터 입력 파이프라인 및 Estimator API
- 효율적인 데이터 입력 파이프라인
- 입력 파이프라인 구조
- tf.data.
- 성능 최적화
- 데이터셋 구축
- 데이터 증강
- 텐서플로 데이터셋–tfds
- 케라스 통합
- 즉시 실행 통합
- Estimator API
- 데이터 입력 파이프라인
- 사용자 정의 Estimator
- 사전 정의 Estimator
- 케라스 모델 사용하기
- Canned Estimator 활용
- 요약
- 실습
- 효율적인 데이터 입력 파이프라인
- 3부. 신경망의 응용 분야
- 6장. 텐서플로 허브를 사용한 이미지 분류
- 데이터 수집
- 전이학습
- 텐서플로 허브
- 피처 추출기로 Inception v3 사용
- 모델에 데이터 적용
- 모델 작성–hub.KerasLayer
- 훈련과 평가
- 훈련 속도
- 미세 조정
- 미세 조정 시기
- 텐서플로 허브 통합
- 훈련 및 평가
- 훈련 속도
- 요약
- 실습
- 7장. 객체 탐지 소개
- 데이터 수집
- 객체 지역화
- 회귀 문제로서의 지역화
- Intersection over Union
- 평균 정밀도
- mAP
- 훈련 스크립트 개선
- 분류와 지역화
- 멀티태스크 러닝
- 더블 헤드 네트워크
- 앵커 기반 탐지기
- 앵커 상자
- 요약
- 실습
- 8장. 시맨틱 분할 및 사용자 정의 데이터셋 빌더
- 시맨틱 분할
- 문제점
- 디컨볼루션–전치 컨볼루션
- U - Net 아키텍처
- 텐서플로 DatasetBuilder 만들기
- 계층적 구조
- 데이터셋 클래스와 DatasetInfo
- 데이터셋 분할
- 예제 생성
- 빌더 사용하기
- 모델 훈련과 평가
- 데이터 준비
- 훈련 루프와 케라스 콜백
- 평가와 추론
- 요약
- 실습
- 시맨틱 분할
- 9장. 생성적 적대 신경망
- GAN과 해당 애플리케이션의 이해
- 가치함수
- 비포화 가치함수
- 모델 정의와 훈련 단계
- GAN 응용 분야
- 무조건부 GAN
- 데이터 준비
- 생성기 정의
- 판별기 정의
- 손실함수 정의
- 무조건부 GAN의 적대적 훈련 프로세스
- 조건부 GAN
- 조건부 GAN에 관한 데이터 가져오기
- 조건부 GAN에서 생성기 정의
- 조건부 GAN에서 판별기 정의
- 적대적 훈련 과정
- 요약
- 실습
- GAN과 해당 애플리케이션의 이해
- 10장. 모델을 실무에 적용하기
- SavedModel 직렬화 형식
- 기능
- 케라스 모델로 SavedModel 생성하기
- 일반 함수를 SavedModel로 변환하기
- 파이썬 배포
- 일반 연산 그래프
- 케라스 모델
- 플랫 그래프
- 지원하는 배포 플랫폼
- TensorFlow.js
- Go 바인딩과 tfgo
- 요약
- 실습
- SavedModel 직렬화 형식