《TensorFlow深度學習應用實踐》
http://product.dangdang.com/25207334.html
內容 簡 介
本書總的指導思想是在掌握深度學習的基本知識和特性的基礎上,培養使用TensorFlow進行實際編程以解決圖像處理相關問題的能力。全書力求深入淺出,通過通俗易懂的語言和詳細的程序分析,介紹TensorFlow的基本用法、高級模型設計和對應的程序編寫。
本書共22章,內容包括Python類庫的安裝和使用、TensorFlow基本數據結構和使用、TensorFlow數據集的創建與讀取、人工神經網絡、反饋神經網絡、全卷積神經網絡的理論基礎、深度學習模型的創建、模型的特性、算法、ResNet、Slim、GAN等。本書強調理論聯系實際,重點介紹TensorFlow編程解決圖像識別的應用,提供了大量數據集,並以代碼的形式實現了深度學習模型,以供讀者參考。
本書既可作為學習人工神經網絡、深度學習、TensorFlow程序設計以及圖像處理等相關內容的程序設計人員培訓和自學用書,也可作為高等院校和培訓機構相關專業的教材。
前 言
我們處於一個變革的時代!
給定一個物體,讓一個3歲的小孩描述這個物體是什麽,似乎是一件非常簡單的事情。然而將同樣的東西放在計算機面前,讓它描述自己看到了什麽,這在不久以前還是一件不可能的事。
讓計算機學會“看”東西,這是一個專門的學科——計算機視覺所正在做的工作。借助於人工神經網絡和深度學習的發展,近年來計算機視覺在研究上取得了重大突破。通過模擬生物視覺所構建的卷積神經網絡模型在圖像識別和分類上取得了非常好的效果。
而今,借助於深度學習的發展,使用人工智能去處理常規勞動、理解語音語義、幫助醫學診斷和支持基礎科研工作,這些曾經是夢想的東西似乎都在眼前。
寫作本書的原因
TensorFlow作為最新的、應用範圍最為廣泛的深度學習開源框架自然引起了廣泛的關註,它吸引了大量程序設計和開發人員進行相關內容的開發與學習。掌握TensorFlow程序設計基本技能的程序設計人員成為當前各組織和單位熱切尋求的熱門人才。他們的主要工作就是利用獲得的數據集設計不同的人工神經模型,利用人工神經網絡強大的學習能力提取和挖掘數據集中包含的潛在信息,編寫相應的TensorFlow程序對數據進行處理,對其價值進行進一步開發,為商業機會的獲取、管理模式的創新、決策的制定提供相應的支持。隨著越來越多的組織、單位和行業對深度學習應用的重視,高層次的TensorFlow程序設計人員必將成為就業市場上緊俏的人才。
目前來說,TensorFlow雖然被谷歌開源公布只有不到兩年時間,但是其在工業、商業以及科學研究上的應用量很大,使之成為時下最熱門的深度學習框架。由於國內翻譯和知識傳播的滯後性等多方面的原因,國內對這方面的介紹較為欠缺,缺少最新 TensorFlow框架使用和設計的相關內容,從而造成了知識傳播的延遲。學習是為了掌握新知識、獲得新能力,不應是學習已經被摒棄的內容。
其次,與其他應用框架不同,TensorFlow並不是一個簡單的編程框架,深度學習也不是一個簡簡單單的名詞,而是需要相關研究人員對隱藏在其代碼背後的理論進行學習、掌握一定的數學知識和理論基礎的。筆者具有長期一線理科理論教學基礎,可以將其中的理論知識以非常淺顯易懂的語言進行介紹和描述,這點是市面上的某些相關書籍所無法比擬的。
本書是為了滿足廣大TensorFlow程序設計和開發人員學習最新的TensorFlow程序代碼要求而出版的。本書對涉及的深度學習的結構與編程代碼做了循序漸進的介紹與說明,以解決實際圖像處理為依托,從理論開始介紹TensorFlow程序設計模式,多角度、多方面地對其中的原理和實現提供翔實的分析,並結合實際案例編寫的應用程序設計,使讀者能夠在開發者的層面掌握TensorFlow程序設計方法和技巧,為開發出更強大的圖像處理應用打下紮實的基礎。
本書的優勢
l 本書在方向上偏重於使用卷積神經網絡以及其相關變化的模型,在TensorFlow框架上進行圖像特征提取、圖像識別以及具體應用,這在市面上鮮有涉及。
l 本書並非枯燥的理論講解,而是大量最新文獻的歸納總結。在這點上,本書與其他編程書籍有本質區別。本書的例子都是來自於現實世界中對圖像分辨和特征競賽的優勝模型,通過介紹這些例子可以使讀者更深一步地了解和掌握其內在的算法和本質。
l 本書作者有長期研究生和本科教學經驗,通過通俗易懂的語言對全部內容進行講解,深入淺出地介紹反饋神經網絡和卷積神經網絡理論體系的全部知識點,並在程序編寫時使用官方推薦的TensorFlow最新框架進行程序設計,幫助讀者更好地使用最新的模型框架,理解和掌握TensorFlow程序設計的精妙之處。
l 作者認為,掌握和使用深度學習的人才應在掌握基本知識和理論的基礎上,重視實際應用程序開發能力和解決問題能力的培養。因此,本書結合作者在實際工作中遇到的大量實際案例進行分析,抽象化核心模型並給出具體解決方案,全部程序例題均提供了相應代碼,以供讀者學習。
本書的內容
本書共分為22章,所有代碼均采用Python語言編寫,這也是TensorFlow框架推薦使用語言。
第1章介紹深度學習的基本內容,初步介紹深度學習應用於計算機視覺和發展方向,介紹使用深度學習解決計算機視覺問題的應用前景,旨在說明使用深度學習和人工智能實現計算機視覺是未來的發展方向,也是必然趨勢。
第2章介紹Python的安裝和最常用的類庫。Python語言是易用性非常強的語言,可以很方便地將公式和願景以代碼的形式表達出來,而無須學習過多的編程知識。Python專用類庫threading並不常見,只是要為後文的數據讀取和TensorFlow專用格式的生成打下基礎。
第3章全面介紹機器學習的基本分類、算法和理論基礎,這裏介紹了不同的算法,例如回歸算法和決策樹算法的具體實現和應用。這些是深度學習的基礎理論部分,通過這些向讀者透徹而準確地展示深度學習的結構與應用,為更進一步掌握深度學習在計算機視覺中的應用打下紮實的基礎。
第4章主要介紹Python語言的使用。通過介紹和實現不同的Python類庫,幫助讀者強化Python的編程能力、學習相應類庫。這些都是在後文中反復使用的內容。同時借用掌握的知識學習數據的可視化展示技能。這項技能在數據分析中雖是基本技能,但具有非常重要的作用。
第5~6章是對OpenCV類庫使用方法的介紹。本書以圖像處理為重點,對圖像數據的讀取、編輯以及加工是本書的重中之重。OpenCV是Python中專門用以對圖像處理的類庫,通過基礎講解和進階介紹使讀者掌握這個重要類庫的使用。學會對圖像的裁剪、變換和平移的代碼編寫。第5章以例子的形式對卷積核的基礎內容做了一個介紹,並用Python語言實現了卷積核的功能。卷積核是本書中非常重要的基礎部分,也是圖像處理中非常重要的組成部分,通過編寫相應的程序去實現卷積核對圖像的處理、掌握和理解卷積神經網絡有很大幫助。
第7~8章是TensorFlow的入門基礎,通過一個娛樂性質的網站向讀者展示TensorFlow的基本應用,用圖形圖像的方式演示神經網絡進行類別分類的擬合過程,在娛樂的同時了解其背後的內容。
第9章是本書的一個重點,也是神經網絡的基礎內容。本章的反饋算法是解決神經網絡計算量過大的裏程碑算法。筆者通過詳細認真的講解,使用通俗易懂的語言對這個算法進行介紹,並通過獨立編寫代碼的形式為讀者實現這個神經網絡中最重要的算法內容。本章的內容看起來不多,但是非常重要。
第10章對TensorFlow的數據輸入輸出做了詳細的介紹。從讀取CSV文件開始,到教會讀者制作專用的TensorFlow數據格式TFRecord,這在目前市面上的書籍中鮮有涉及。使用TensorFlow框架進行程序編寫、數據的準備和規範化是重中之重,因此本章也是較為重要的一個章節。
第11~12章是應用卷積神經網絡在TensorFlow框架上進行學習的一個基礎教程,經過前面章節的準備和介紹,采用基本理論——卷積神經網絡進行手寫體的辨識是深度學習最基本的技能,也是非常重要的一個學習基礎。並且在程序編寫的過程中,作者向讀者展示了參數調整對模型測試結果的重要作用。這是目前市面上相關書籍沒有涉及到的內容,非常重要。
第13~14章是卷積神經網絡算法的介紹和應用。在這兩章內容中,筆者詳細介紹卷積神經網絡的應用,特別是在圖像識別中的應用,由單純的手寫體數值的識別發展到對顯示物體的識別。借助於圖像識別比賽的數據集,使用在比賽中得獎的卷積神經網絡模型,使讀者掌握卷積神經網絡的變種。卷積神經網絡的理論基礎就是卷積的正向和反向過程,一般正向過程較好理解和學習,但是對於反向運算,基本上沒有涉及,有的話也僅僅是對公式的復制和摘抄。本書在14章中詳細地介紹卷積神經網絡反向過程的運算和計算方法,通過大量例子的表述,第一次非常詳細地描述了卷積神經網絡的反向運算。這是相關書籍中欠缺的內容。
第15章通過一個完整的例子演示使用卷積神經網絡進行圖像識別的流程。例子來自於ImageNet圖像識別競賽,所采用的模型也是比賽中獲得準確率最高的模型。通過對項目每一步的詳細分析,手把手地教會讀者如何使用卷積神經網絡進行圖像識別。
第16章介紹VGGNet的組成結構,著重介紹VGGNet的網絡調參以及在其後執行Finetuning的能力。本章將第15章的例子復用VGG16實現,給讀者提供一個以不同的視角和不同的模型方法解決問題的思路。
第17章針對目前深度學習就業者給出的一些面試題的答案,這些問題可以幫助招聘者分析誰是高水平的面試者,也能幫助就業者完善自己的技術概念和知識,找準自己的定位,為將來升職加薪鋪平道路。
第18章介紹深度學習網絡ResNet模型,它是在網絡中使用大量殘差模塊作為網絡的基本組成部分,主要作用是使得網絡隨著深度的變化增加,而不會產生權重衰減和梯度衰減或者消失等這些問題。除了ResNet模型,本章還介紹了新興的卷積神經模型,包括SqueezeNet和Xception。
第19~20章開始進入TensorFlow學習的高級階段,重點介紹的是一個API——Slim,它是一個用於定義、訓練和評估較為復雜模型的輕量級開發類庫。這兩章不光介紹了它的使用方法,還通過它制作了一個多層感知機MLP、一個卷積神經網絡CNN,最後還使用Slim預訓練模型進行Finetuning。
第21章介紹全卷積神經網絡圖像分割,先講解分割的理論基礎和實現方法,然後給出了全卷積神經網絡進行圖像分割的分步流程與編程基礎,最後給出了使用VGG16全卷積網絡進行圖像分割的實戰。
第22章講解的是GAN——對抗生成網絡,本章理論雖然看似枯燥,但筆者用一個“生成器”和一個“辨別器”共同在一個網絡中不停地進行“對抗”來比喻,降低了閱讀的難度。最終還通過使用GAN生成手寫體數字的案例讓讀者真正學會GAN的應用。
除此之外,全書對於目前圖像識別最流行和取得最好成績的深度學習模型做了介紹,這些都是目前的深度學習的熱點和研究重點。
本書的特點
l 本書不是純粹的理論知識介紹,也不是高深技術研討,完全是從實踐應用出發,用最簡單、典型的示例引申出核心知識,最後還指出了通往“高精尖”進一步深入學習的道路。
l 本書沒有深入介紹某一個知識塊,而是全面介紹TensorFlow涉及的圖像處理的基本結構和上層程序設計,系統綜合地講解深度學習的全貌,使讀者在學習的過程中把握好方向。
l 本書在寫作上淺顯易懂,沒有深奧的數學知識,而是采用較為形象的形式,使用大量圖像示例描述應用的理論知識,讓讀者在輕松愉悅的閱讀下掌握相關內容。
l 本書旨在引導讀者進行更多技術上的創新,每章都會用示例描述的形式幫助讀者更好地理解本章的學習內容。
l 本書代碼遵循重構原理,避免代碼汙染,真心希望讀者能寫出優秀、簡潔、可維護的代碼。
本書適合人群
本書配套示例源代碼下載地址(註意數字與字母大小寫)如下:
https://pan.baidu.com/s/1jHFg2uq
如果下載有問題或者對本書有任何疑問,請聯系[email protected],郵件主題為“TensorFlow”。
本書適合人群
本書既適合學習人工神經網絡、深度學習以及TensorFlow程序設計等相關內容的程序設計人員閱讀,也可以作為高等院校相關專業的教材。建議在學習本書內容的過程中,理論聯系實際,獨立進行一些代碼的編寫,采取開放式的實驗方法,即讀者自行準備實驗數據和實驗環境,解決實際問題,最終達到理論聯系實際的目的。
本書作者
本書作者現任計算機專業教師,擔負數據挖掘、Java程序設計、數據結構等多項本科及研究生課程,研究方向為數據倉庫與數據挖掘、人工智能、機器學習,在研和參研多項科研項目。在寫作過程中得到了家人和朋友的大力支持,在此對他們一並表示感謝。
王曉華
2017年11月
《TensorFlow深度學習應用實踐》