《21個項目玩轉深度學習基于TensorFlow的實踐詳解》以實踐為導向,深入介紹了深度學習技術和TensorFlow框架編程內容。通過本書,讀者可以訓練自己的圖像識別模型、進行目標檢測和人臉識別、完成一個風格遷移應用,還可以使用神經網絡生成圖像和文本,進行時間序列預測、搭建機器翻譯引擎,訓練機器玩游戲等。全書共包含21個項目,分為深度卷積網絡、RNN網絡、深度強化學習三部分。讀者可以在自己動手實踐的過程中找到學習的樂趣,了解算法和編程框架的細節,讓學習深度學習算法和TensorFlow的過程變得輕松和高效。本書基于TensorFlow 1.4版本,并介紹了該版本中的一些新特性。
1.本書以TensorFlow為工具,從基礎的MNIST手寫體識別開始,介紹了基礎的卷積神經網絡、循環神經網絡,還包括正處于前沿的對抗生成網絡、深度強化學習等課題,代碼基于TensorFlow1.4.0及以上版本。
2.書中所有內容由21個可以動手實驗的項目組織起來,并在其中穿插TensorFlow的教學,讓你可以在實踐中比較輕松地學習到深度學習領域的基礎知識,掌握TensorFlow的使用方法,并積累豐富的深度學習實戰經驗。
3.通過本書,可以學到:
在動手實踐中快速入門深度學習領域。
通過實驗快速掌握TensorFlow的操作方法。
掌握卷積神經網絡、循環神經網絡、對抗生成網絡和深度強化學習等深度學習積累豐富的深度學習實戰項目,如圖像分類、目標檢測、人臉識別、圖像生成、文本生成、序列分類、時間序列預測等。
學習TensorFlow的一些新特性,如TimeSeries模塊、RNNCell等。
我們正處在一個日新月異、飛速變革的時代,層出不窮的新技術每天都在沖擊和改變我們的生活。人工智能無疑是其中最受關注、也是影響最深遠的技術領域。它為計算機插上了翅膀,演變出許多從前根本無法想象的新技術、新應用。AlphaGoZero,一臺沒有任何先驗知識的人工智能機器,可以在幾天內通過自我博弈成長為世界第一的圍棋大師,超越人類幾千年積累的經驗;風格遷移應用能夠自動將用戶的照片轉變為著名的繪畫藝術風格;機器可以在零點幾秒內完成翻譯,把一種語言譯成另一種語言。此外,有關人臉識別、自動駕駛等新技術的應用也都紛紛開始落地。在過去的幾年內,人工智能技術不僅在學術上取得了巨大的突破,也開始走向尋常百姓家,真正為人們的生活提供便利。
本書主要為讀者介紹這次人工智能浪潮最重要的組成部分深度學習技術,使用的編程框架是谷歌的TensorFlow。借助于谷歌巨大的影響力,TensorFlow一經發布就引起了廣泛的關注,目前(截止至2017年底)TensorFlow在Github上已經有了8萬4千多個Star,是所有深度學習框架中最多的。
鑒于目前市場上已有很多深度學習和TensorFlow的入門書籍,下面我們著重談一談本書與它們的不同之處,主要有以下幾點:
實踐、應用導向。深度學習需要深厚的數理基礎,對于初學者來說不是很友好。本書希望從實踐出發,用具體的例子來引導讀者學習深度學習技術和TensorFlow編程技巧。我們主要從實用性和趣味性兩個方面考量,選擇了21個實踐項目,其中既有MNIST圖像識別這樣的入門項目,也有目標檢測、人臉識別、時間序列預測這樣的實用性項目,還有一些諸如DeepDream這樣的趣味性項目。讀者可以在實踐中找到樂趣,逐漸進步,讓學習深度學習和TensorFlow的過程不再那么痛苦。
清晰、有深度的介紹。在寫書過程中,我們盡量用簡單的語言來描述算法的原理,做到清晰有條理。此外,深度學習是一門還在快速發展的新技術,限于篇幅所限,很多內容不能完全寫到書中,我們在大部分章節的末尾列出了拓展閱讀材料,有興趣的讀者可以參考拓展材料進一步學習細節知識。
基于TensorFlow1.4版本。TensorFlow的發展非常迅速,本書代碼全部基于TensorFlow最新的1.4版本(包括1.4.0和1.4.1),并介紹了TensorFlow的一些新特性,如TimeSeries模塊(1.3版本添加)、新的MultiRNNCell函數(1.2版本更改)等。本書的代碼會在如下Github地址上提供,并會隨新的TensorFlow版本的發布而同步更新:https://github.com/hzy46/Deep-Learning-21-Examples。
本書代碼推薦的運行環境為:Ubuntu14.04,Python2.7、TensorFlow1.4.0。請盡量使用類Unix系統和Python2來運行本書的代碼。
本書主要內容
本書共包括21章,內容編排如下:
第1到第11章主要介紹深度卷積神經相關的項目。其中,第1~3章屬于入門章節,主要討論深度學習中最基礎的圖像識別問題。第4~7章討論了其他計算機視覺相關的實踐案例,如目標識別、人臉識別、圖像風格遷移等。最后,8~11章介紹了GAN模型和它的幾個重要變體。
第12到第17章主要介紹RNN、LSTM相關的項目。RNN、LSTM通常用來處理序列型數據,這里第12章是一個入門章節,會詳細介紹RNN和LSTM的原理、實現方法和一個應用實例CharRNN。第13到17章討論一些更復雜也更具體的案例,如序列分類、詞嵌入表示、時間序列預測、機器翻譯等。
第18到第21章主要介紹強化學習相關的項目。作為基礎,第18、19章分別介紹了相對簡單的QLearning和SARSA算法,第20章和第21章介紹了更復雜的DQN和策略梯度算法。
如何閱讀本書
在閱讀此書前,讀者應當了解Linux系統的基本操作,并會使用Python進行簡單的編程,此外讀者還需具備基礎的機器學習知識。這本書章節的安排是依據讀者對深度學習的了解循序漸進設立的,建議初學者從前至后閱讀。由于深度學習和TensorFlow都不大易于理解,我建議讀者分幾遍閱讀本書:
第一遍先簡單的瀏覽一下,看一看書中都有哪些實踐項目。當對基本的概念有初步的理解時,就可以嘗試配置一下開發環境。
第二遍,從前至后,閱讀各章中算法的原理,并運行相應的實踐項目。在這個過程中,希望讀者能在自己動手的過程中找到學習的樂趣。讀者可以對照源代碼和書中的內容,深入學習各個模型的細節,此外還可以根據自己的需求對代碼進行修改。本書會涉及到大量TensorFlow中的函數,由于篇幅限制,不可能將每一個函數都介紹一遍,書中只會對比較重要的函數進行介紹,讀者可以參考TensorFlow的官方文檔,查看其他函數的功能說明。
第三遍再根據需要對照源程序看相關章節。此外,讀者還可以參閱章節最后的拓展閱讀來作進一步學習。最后,如果你是一名深度學習和TensorFlow的精通者,也可以根據需要直接跳讀到相關章節,查閱你需要的內容。
致謝
我首先要感謝我的父母,是他們將我養育成人,父母永遠健康快樂是我最大的心愿。
感謝互聯網時代,感謝網絡上數不清的優秀開發者和博主,也感謝谷歌的開源精神,讓我們可以如此緊跟時代最前沿的技術,并為技術的進步做出自己微薄的貢獻。
我還要真誠地感謝電子工業出版社對這本書的認可和興趣。感謝電子工業出版社的孫學瑛女士,她的熱情推動最終促成了我與電子工業出版社的合作。感謝孫亞東編輯,他對本書的重視和誠懇的建議,在寫作過程中給了我莫大的幫助。
最后,感謝劉婧源同學給本書提出的寶貴的意見。
由于本人水平有限,書中不足及錯誤之處在所難免,敬請專家和讀者給予批評指正。如果您想和我進行技術交流,可以發送意見反饋郵件至hzydl21@163.com,亦可在知乎上找到我:https://www.zhihu.com/people/he-zhi-yuan-16/,此外還可以訪問書友論壇http://forum.broadview.com.cn。
何之源
2018年1月1日
何之源,知乎專欄AIInsight作者。針對Tensorflow早期學習案例不足的情況,在網上撰寫了大量實踐文章與TensorFlow教程,教程風格清晰易懂又不失深度,獲得了廣大讀者的肯定。熱愛編程,在人工智能和深度學習領域有豐富的實踐經驗。