21個項目玩轉深度學習 -- 基於 TensorFlow 的實踐詳解 21个项目玩转深度学习:基于TensorFlow的实践详解

何之源

買這商品的人也買了...

商品描述

《21個項目玩轉深度學習——基於TensorFlow的實踐詳解》以實踐為導向,深入介紹了深度學習技術和TensorFlow框架編程內容。

通過本書,讀者可以訓練自己的圖像識別模型、進行目標檢測和人臉識別、完成一個風格遷移應用,還可以使用神經網絡生成圖像和文本,進行時間序列預測、搭建機器翻譯引擎,訓練機器玩游戲等。

全書共包含21個項目,分為深度捲積網絡、RNN網絡、深度強化學習三部分。

讀者可以在自己動手實踐的過程中找到學習的樂趣,瞭解算法和編程框架的細節,讓學習深度學習算法和TensorFlow的過程變得輕松和高效。

本書基於TensorFlow 1.4版本,並介紹了該版本中的一些新特性。

作者簡介

何之源

現為複旦大學人工智能方向在讀碩士生。

針對Tensorflow早期學習案例不足的情況,在知乎等網站上發表了多篇實踐文章,獲得了廣大讀者的肯定。

何之源於2012年通過信息學競賽保送進入復旦大學學習,2016獲得複旦大學理學學士學位,並榮獲復旦大學優秀學生的稱號。

同年進入復旦大學計算機學院攻讀碩士學位。在編程和機器學習領域有多年一線實踐經驗。

目錄大綱

前言
第1章MNIST機器學習入門1 
1.1MNIST數據集2 
1.1.1簡介2 
1.1.2實驗:將MNIST數據集保存為圖片5 
1.1.3圖像標籤的獨熱(one—hot)表示6 
1.2利用TensorFlow識別MNIST8 
1.2.1Softmax回歸8 
1.2.2兩層卷積網絡分類14 
1.3總結18 
第2章CIFAR—10與ImageNet圖像識別19 
2.1CIFAR—10數據集20 
2.1.1CIFAR—10簡介20 
2.1.2下載CIFAR —10數據21 
2.1.3TensorFlow的數據讀取機制23 
2.1.4實驗:將CIFAR—10數據集保存為圖片形式30 
2.2利用TensorFlow訓練CIFAR—10識別模型34 
2.2.1數據增強(DataAugmentation)34 
2.2. 2CIFAR—10識別模型36 
2.2.3訓練模型39 
2.2.4在TensorFlow中查看訓練進度39 
2.2.5測試模型效果42 
2.3ImageNet圖像識別模型44 
2.3.1ImageNet數據集簡介44 
2.3.2歷代ImageNet圖像識別模型45 
2.4總結49
第3章打造自己的圖像識別模型50 
3.1微調(Fine—tune)的原理51 
3.2數據準備52 
3.3使用TensorFlowSlim微調模型56 
3.3.1下載TensorFlowSlim的源代碼56 
3.3.2定義新的datasets文件57 
3.3. 3準備訓練文件夾59 
3.3.4開始訓練60 
3.3.5訓練程序行為62 
3.3.6驗證模型正確率63 
3.3.7TensorBoard可視化與超參數選擇64 
3.3.8導出模型並對單張圖片進行識別65 
3.4總結69 
第4章DeepDream模型70 
4.1DeepDream的技術原理71 
4.2TensorFlow中的DeepDream模型實踐73 
4.2.1導入Inception模型73 
4.2.2生成原始的DeepDream圖像76 
4.2.3生成更大尺寸的DeepDream圖像78 
4.2 .4生成更高質量的DeepDream圖像82 
4.2.5最終的DeepDream模型87 
4.3總結90 
第5章深度學習中的目標檢測91 
5.1深度學習中目標檢測的原理92 
5.1.1R—CNN的原理92 
5.1. 2SPPNet的原理94 
5.1.3FastR—CNN的原理97
5.1.4FasterR—CNN的原理98 
5.2TensorFlowObjectDetectionAPI101 
5.2.1安裝TensorFlowObjectDetectionAPI101 
5.2.2執行已經訓練好的模型103 
5.2.3訓練新的模型109 
5.2.4導出模型並預測單張圖片113 
5.3總結114 
第6章人臉檢測和人臉識別115 
6.1MTCNN的原理116 
6.2使用深度卷積網絡提取特徵121 
6.2.1三元組損失(TripletLoss)的定義123 
6.2.2中心損失(CenterLoss)的定義123 
6.3使用特徵設計應用125 
6.4在TensorFlow中實現人臉識別126 
6.4.1項目環境設置126 
6.4.2LFW人臉數據庫127 
6.4.3LFW數據庫上的人臉檢測和對齊128 
6.4.4使用已有模型驗證LFW數據庫準確率129 
6.4.5在自己的數據上使用已有模型130 
6.4.6重新訓練新模型133 
6.4.7三元組損失和中心損失的定義138 
6.5總結140 
第7章圖像風格遷移141 
7.1圖像風格遷移的原理142 
7.1.1原始圖像風格遷移的原理142 
7.1.2快速圖像風格遷移的原理148
7.2在TensorFlow中實現快速風格遷移149 
7.2.1使用預訓練模型150 
7.2.2訓練自己的模型153 
7.2.3在TensorBoard中監控訓練情況154 
7.2.4項目實現細節157 
7.3總結162 
第8章GAN和DCGAN入門163 
8.1GAN的原理164 
8.2DCGAN的原理166 
8.3在TensorFlow中用DCGAN生成圖像169 
8.3.1生成MNIST圖像170 
8.3.2使用自己的數據集訓練171 
8.3.3程序結構分析:如何將圖像讀入模型173 
8.3.4程序結構分析:可視化方法177 
8.4總結180 
第9章pix2pix模型與自動上色技術181 
9.1cGAN的原理182 
9.2pix2pix模型的原理184 
9.3TensorFlow中的pix2pix模型187 
9.3.1執行已有的數據集187 
9.3.2創建自己的數據集191 
9.4使用TensorFlow為灰度圖像自動上色194 
9.4.1為食物圖片上色194 
9.4.2為動漫圖片進行上色196 
9.5總結198 
第10章超分辨率:如何讓圖像變得更清晰199 
10.1數據預處理與訓練200 
10.1.1去除錯誤圖片200
10.1.2將圖像裁剪到統一大小202 
10.1.3為代碼添加新的操作202 
10.2總結209 
第11章CycleGAN與非配對圖像轉換210 
11.1CycleGAN的原理211 
11.2在TensorFlow中用訓練CycleGAN模型213 
11.2.1下載數據集並訓練213 
11.2.2使用自己的數據進行訓練217 
11.3程序結構分析220 
11.4總結224 
第12章RNN基本結構與CharRNN文本生成225 
12.1RNN的原理226 
12.1.1經典RNN的結構226 
12.1. 2NVS1RNN的結構229 
12.1.31VSNRNN的結構230 
12.2LSTM的原理231 
12.3CharRNN的原理235 
12.4TensorFlow中的RNN實現方式237 
12.4.1實現RNN的基本單元:RNNCell238 
12.4.2對RNN進行堆疊:MultiRNNCell239 
12.4.3注意點:BasicRNNCell和BasicLSTMCell的output240 
12.4.4使用tf.nn.dynamic_rnn展開時間維度241 
12.5使用TensorFlow實現CharRNN242 
12.5.1定義輸入數據243 
12.5.2定義多層LSTM模型244
12.5.3定義損失245 
12.5.4訓練模型與生成文字246 
12.5.5更多參數說明250 
12.5.6運行自己的數據250 
12.6總結251 
第13章序列分類問題詳解252 
13.1NVS1的RNN結構253 
13.2數列分類問題與數據生成254 
13.3在TensorFlow中定義RNN分類模型258 
13.3.1定義模型前的準備工作258 
13.3.2定義RNN分類模型259 
13.3.3定義損失並進行訓練261 
13.4模型的推廣262 
13.5總結263 
第14章詞的向量表示:word2vec與詞嵌入264 
14.1為什麼需要做詞嵌入265 
14.2詞嵌入的原理266 
14.2.1CBOW實現詞嵌入的原理266 
14.2.2Skip—Gram實現詞嵌入的原理269 
14.3在TensorFlow中實現詞嵌入270 
14.3.1下載數據集270 
14.3.2製作詞表272 
14.3.3生成每步的訓練樣本274 
14.3.4定義模型276 
14.3.5執行訓練279 
14.3.6可視化281 
14.4與第12章的對比284 
14.5總結285
第15章在TensorFlow中進行時間序列預測286 
15.1時間序列問題的一般形式287 
15.2用TFTS讀入時間序列數據287 
15.2.1從Numpy數組中讀入時間序列數據288 
15.2.2從CSV文件中讀入時間序列數據291 
15.3使用AR模型預測時間序列293 
15.3.1AR模型的訓練293 
15.3.2AR模型的驗證和預測295 
15.4使用LSTM模型預測時間序列297 
15.4.1LSTM模型中的單變量時間序列預測297 
15.4. 2LSTM模型中的多變量時間序列預測299 
15.5總結301 
第16章神經網絡機器翻譯技術302 
16.1Encoder—Decoder模型的原理303 
16.2注意力機制(Attention)305 
16.3使用TensorFlowNMT搭建神經網絡翻譯引擎309 
16.3.1示例:將越南語翻譯為英語309 
16.3.2構建中英翻譯引擎313 
16.4TensorFlowNMT源碼簡介317 
16.5總結319 
第17章看圖說話:將圖像轉換為文字320 
17.1ImageCaption技術綜述321 
17.1.1從Encoder— Decoder結構談起321 
17.1.2將Encoder—Decoder應用到ImageCaption任務上322
17.1.3對Encoder—Decoder的改進1:加入Attention機制323 
17.1.4對Encoder—Decoder的改進2:加入高層語義325 
17.2在TensorFlow中實現ImageCaption327 
17.2.1下載代碼327 
17.2.2環境準備328 
17.2. 2編譯和數據準備328 
17.2.3訓練和驗證330 
17.2.4測試單張圖片331 
17.3總結332 
第18章強化學習入門之Q333 
18.1強化學習中的幾個重要概念334 
18.2QLearning的原理與實驗336 
18.2 .1環境定義336 
18.2.2Q函數338 
18.2.3Q函數的學習策略339 
18.2.4greedy策略341 
18.2.5簡單的QLearning示例341 
18.2.6更複雜的情況342 
18.3總結343 
第19章強化學習入門之SARSA算法344 
19.1SARSA算法的原理345 
19.1.1通過與QLearning對比學習SARSA算法345 
19.1.2off—policy與on—policy346 
19.2SARSA算法的實現347 
19.3總結348 
第20章深度強化學習:DeepQLearning349
20.1DQN算法的原理350 
20.1.1問題簡介350 
20.1.2DeepQNetwork351 
20.1.3訓練方法352 
20.2在TensorFlow中運行DQN算法353 
20.2.1安裝依賴庫353 
20.2.2訓練355 
20.2.3測試356 
20.3在TensorFlow中DQN算法的實現分析357 
20.4總結360 
第21章策略梯度(PolicyGradient)算法361 
21.1策略梯度(PolicyGradient)算法的原理362 
21.1.1Cartpole遊戲362 
21.1.2策略網絡(PolicyNetwork)363 
21.1.3訓練策略網絡364 
21.2在TensorFlow中實現策略梯度算法365 
21.2.1初始化365 
21.2.2定義策略網絡366 
21.2.3訓練367 
21.3總結371