機器學習深度學習領域參考書 包攬TensorFlow1.1的新特性 人臉識別 語音辨識 圖像和語音相結合等熱點一應俱全TensorFlow是Google公司開發的深度學習框架,也是目前深度學習的主流框架之一。本書從深度學習的基礎講起,深入TensorFlow框架原理、模型構建、原始程式碼分析和網路實現等各個方面。
全書分為基礎篇、實戰篇和加強篇三部分。
基礎篇講解人工智慧的入門知識,深度學習的方法,TensorFlow的基礎原理、系統架構、設計理念、程式設計模型、常用API、批次標準化、模型的存儲與載入、佇列與執行緒,實現一個自訂操作,並進行TensorFlow原始程式碼解析,介紹卷積神經網路(CNN)和迴圈神經網路(RNN)的演化發展及其TensorFlow實現、TensorFlow的高級框架等知識。
實戰篇講解如何用TensorFlow寫一個神經網路程式並介紹TensorFlow實現各種網路(CNN、RNN和自編碼網路等),並對MINIST資料集進行訓練,講解TensorFlow在人臉識別、自然語言處理、圖像和語音的結合、生成式對抗網路等方面的應用。
加強篇講解TensorFlow的分散式原理、架構、模式、API,還會介紹TensorFlow XLA、TensorFlow Debugger、TensorFlow和Kubernetes結合、TensorFlowOnSpark、TensorFlow移動端應用,以及TensorFlow Serving、TensorFlow Fold和TensorFlow計算加速等其他特性。附錄中列出一些可供參考的公開資料集,並結合作者的項目經驗介紹項目管理的一些建議。
本書深入淺出,理論聯繫實際,實戰案例新穎,基於最新的TensorFlow 1.1版本,涵蓋TensorFlow的新特性,非常適合對深度學習和TensorFlow感興趣的讀者。
作者簡介:
李嘉璇
創建TensorFlow交流社區(tf.greatgeekgrace.com),活躍於各大技術社區,知乎程式設計問題回答者。致力於人工智慧的研究,對深度學習框架的架構、源碼分析及在不同領域的應用有濃厚興趣。有過上百篇論文閱讀和深度學習經驗,處理圖像、社交文本資料情感分析、資料採擷經驗,參與過基於深度學習的自動駕駛二維感知系統Hackathon競賽,曾任職百度研發工程師。
作者序
前言
✤ 緣起
2017 年2 月,TensorFlow 的首屆開發者高峰會(2017 TensorFlow DevSummit)在美國的加州舉行。在會上,Google 公司宣佈正式發佈TensorFlow1.0 版本。本書就是以最新為基礎的1.1.0 版本來介紹TensorFlow 的技術解析和實戰。
人工智慧大潮來了。2016 年,AlphaGo 擊敗圍棋大師李世石後,人工智慧的應用仿佛一夜之間遍地開花。在科技潮流的大環境中,現在矽谷的用人單位越來越偏好雇用既懂理論(思考者)又懂程式設計(執行者)的工程師。思考者的日常工作是閱讀文獻以求產生想法,而執行者則是撰寫程式來實現應用。但是要成為一名真正的工程師,學習機器學習是將思考者和執行者相結合的最快途徑。
眾所皆知,人工智慧是進階計算智慧最寬泛的概念,機器學習是研究人工智慧的工具,深度學習是機器學習的子集,是目前研究領域卓有成效的學習方法。深度學習的架構有很多,而TensorFlow 將神經網路、演算法這些平時停留在理論層面的知識,組織成一個平台架構,集合了神經網路的各個演算法函數組成一個工具箱,讓廣大工程師可以專心建造自己的目標領域的「輪子」,而且TensorFlow 是以Python 語言為基礎的,極易上手,這些優勢迅速吸引了全世界的工程師。
我曾經也是一名前後端開發工程師,更專注於後端工程方向,而潛心研究深度學習和TensorFlow 後,我被TensorFlow 深深地迷住了。我發現它對各行各業將有很深遠的影響,並且會大幅地解放工作力。
與傳統工程師的主要工作—實現產品需求或設計高可用性架構不同,深度學習讓人歸納和抽象人類是怎樣了解和看待問題的,並把這種方式教給機器。舉例來說,在AlphaGo 的研究中,人們需要先抽象出人類思考圍棋的方式,然後將這種方式抽象成演算法,並且配合人類大腦建置中神經網路的傳輸來實現這些演算法。這時,工程師不會再寫實現業務需求的邏輯程式,而是深度學習中將神經網路的「黑盒」和模型效果非常好卻缺乏「可解釋性」的特性相結合,在次次實驗中儘量找出規律。記得美國前總統甘迺迪在宣佈登月計畫時曾說:「我們選擇去月球,不是因為它簡單,而是因為它困難。」今天,我相信,所有致力於人工智慧方向的工程師之所以自豪地去研究,也不是因為它簡單,而是因為它困難。我們研究它,是因為立足於現在這個點往前看,我們看不到已經建好的高樓大廈,看到的是一片等待我們去發掘的空曠的大地,而這個發掘過程需要的是十足的遠見、決心、勇氣和信心。
我在學習的過程中,由於深度學習的資料英文的居多,在了解上走了不少彎路。我把學到的知識和原理用心整理並用文字表述出來,寫成這本書,希望能幫助沒有接觸過深度學習的廣大程式設計師迅速上手,而不再被英文閱讀了解擋在門外。說實話,TensorFlow 的文件以及API 介面是比較抽象的,再加上有一些從工程方向轉入深度學習的人以前沒有過深度學習的經驗,所以如果帶著工程類別程式研發的思維去學習,甚至是實現業務邏輯需求的思維去學習,效果會很差。我希望這本書能為讀者呈現一個通俗容易、具體生動的TensorFlow,讓讀者迅速走入深度學習的世界。
在本書的寫作過程中,為了能充分擠出時間,深夜當我困倦時,我常常讓自己以最不舒服的方式入睡,希望能儘量少睡,以此增加仔細鑽研的時間。有時我還會開啟電視,將音量設定為靜音,感受房間中電視背景光閃爍的動感,以此提醒自己時間的流動。剛開始我會坐在工作環境前寫作,累了又會抱著筆記型電腦坐在床上繼續寫作,有時會寫著寫著不知不覺地睡著,淩晨三四點鐘又醒來,感受黑夜裡的那片安寧,心情頓時平靜,再次投入到鑽研中。每每有靈感,都非常激動;每每再次深入一個概念,增刪易稿,把原理逼近真相地講透,都讓我非常有成就感。
✤ 針對的讀者
我素來不愛深入數學公式的推導原理,對符號也很茫然,只是在必須要用時才對這些公式進行詳細的推導,但是我卻對這些原理在應用層面如何使用出奇地有興趣。本書的目標就是帶讀者進入造「應用輪子」的大門。我會以最少的數學公式講清楚如何用TensorFlow 實現CNN、RNN,如何在實戰中使用TensorFlow 進行圖片分類、人臉識別和自然語言處理等,以及如何將想訓練的資料、想實現的應用親手做出來。
同時,Python 語言是一種相當進階的語言,有「可執行的虛擬程式碼」的美譽,可以用極少的程式行去完成一個複雜的功能,同時Python 還有極為豐富的協力廠商函數庫,讓全世界很多工程師的開發工作變得異常簡單。TensorFlow 是用Python 語言實現的架構,對很多學生來說非常容易上手,當然,如果是有開發經驗的工程師,就更容易學會。如果說設計神經網路模型像是蓋一棟大樓,那麼TensorFlow 強大的API 用起來會讓人感覺就像搭積木一樣容易。因此,懂點Python,即使不怎麼懂數學和演算法原理也沒關係,儘管跟著我一起學便是。
在翻譯學上有一個概念叫作「平行語料庫」,這個概念來自製作於西元前196 年的古埃及羅塞塔石碑,石碑上用希臘文字、古埃及文字和當時的通俗體文字刻了同樣的內容。在本書進行某個概念的說明時,雖然是用Python 程式作示範,但TensorFlow 前端開發同時也支援多種上層語言,本書說明過程中也會兼顧到用C++、Java、Go 語言做開發的讀者。
我希望,本書成為不同領域的讀者進入人工智慧領域的「墊腳石」,也希望所有的讀者在人生路上能利用TensorFlow 這個工具大放異彩。
我有很重的強迫症,因此,在撰寫本書的過程中,閱讀了國內外很多與TensorFlow 相關的資料,對本書的目錄結構和架構經過很多次反覆琢磨和調整;在寫完之後,我又從頭到尾地讀過好幾遍,並且和了解TensorFlow不同方面的人反覆交流,根據建議又反覆修改。這一切就是希望它能通俗容易,把讀者快速領入深度學習的大門。
這扇門的背後是異彩紛呈的,身懷這門技藝的人是應該非常自豪的,但這扇門的背後也是非常辛苦的,有時資料需要自己去想辦法解決,還需要每天看論文,知曉最新科研成果,給自己以啟發,反覆地做實驗,研究演算法和模型,尋求提升和解決方法,經常會遇到在很長一段時間沒有想法的情況。但是,只要做的東西是開創的,令人稱讚的,就會開心地享受這個過程。
我專為本書讀者建立了一個QQ 交流群(320420130),希望在群裡與大家深入討論和交流學習過程中遇到的問題,也希望與大家分享最新的研究成果。
✤ 致謝
非常感謝Google 大腦的工程師Jeff Dean,在得知我目前正在寫這本書的時候,他特地發了郵件鼓勵我:「聽說你寫了一本關於TensorFlow 的書,真是太好了。希望你很享受學習TensorFlow 的這段經歷,並享受運用TensorFlow 完成各種工作的這種體驗。我非常高興你為中文社區寫這本書。」這讓我更堅定了傳播TensorFlow 深度學習的決心。
感謝百度矽谷AI 實驗室資深科學家王益老師關於AI on Kubernetes 的建議。
感謝在百度工作時的同事陳後江,在寫作過程中,我們有時在週末的深夜還進行討論,印象最深的一次是在大冬天晚上,我們剛好都在外面,相互通了20 多分鐘電話,手凍得像冰棒似的。還要感謝童牧晨玄,他也是深度學習領域的同好,對關鍵的概念了解得非常透徹,能十分精準地講出原理。
非常感謝《Redis 實戰》一書的譯者黃健宏,他對技術寫作有很豐富的經驗。和他聊書總是能聊到淩晨以後,討論到暢快處,甚至聊到天亮,他對問題的思考就像是「演雜技」一樣,精準又恰到好處;同時,他又是一個非常讓人感到溫暖和踏實的朋友。
非常感謝iOS 資深開發者唐巧,他在國內社區樂於分享的精神造福了很多的技術從業者,也正是他的推薦讓我和本書的編輯楊海玲老師結下了這段美好的情誼。
非常感謝人民郵電出版社的楊海玲編輯,她最開始想到這個寫作方向,我們一起一點一點地討論書的內容,確認書的寫作架構。在寫作過程中,她的細緻、專業、獨到的見解也為本書增色不少。她對內容嚴謹和認真的態度令人動容。
非常感謝中科院計算所劉昕博士對本書第6 章神經網路的發展提出的建議;感謝曾經的百度同事畢驍鵬對第8 章、第9 章、第13 章、第14 章、第20 章、第21 章提出的極為細緻的建議,尤其是他擅長GPU 和FPGA的部分,對本書的硬體加速提供了很多建議;感謝中科院智慧資訊處理重點實驗室常務副主任山世光對第10 章人臉識別部分提出的建議;感謝劉元震對本書第11 章提出的建議;感謝我的好朋友容器專家苗立堯對第17 章提出的建議;感謝百度地圖導航專家梁騰騰對第19 章移動端開發給予的極為細緻的建議;感謝阿里巴巴資料科學與技術研究院進階專家孫亮博士對整本書的結構和基礎知識提出的建議。
感謝我的好朋友吳麗明,曾經那麼幫助過我;感謝我的好朋友饒志臻先生,一直誘惑我買蘋果裝置,有個硬體發燒友真的很幸福;感謝我的閨蜜謝禹曦,好久沒有和你聚餐了,甚是思念。
最後,還得感謝一位流行歌手—「火星弟弟」華晨宇,他在舞台上那一次次創意和感染力的演出深深地吸引了我,他在台下那認真刻苦作曲改歌的樣子也激勵著我,每次想到他的事蹟,都給我相當大的鼓勵。
非常感謝本書的每一位讀者,本書的完成過程非常辛苦但也填滿甜蜜。我在「知乎」(ID:李嘉璇)和網站(tf.greatgeekgrace.com)上也會回答關於「人工智慧」的各種問題,希望透過內容的更新與讀者不斷交流。另外,由於水準有限,在內容上表述上難免也有遺漏和疏忽,也懇請讀者多多指正。
李嘉璇 2017 年於北京石景山
個人部落格:blog.greatgeekgrace.com
TensorFlow 交流社區:tf. greatgeekgrace.com
電子電子郵件:qiyueli_2013@163.com
前言
✤ 緣起
2017 年2 月,TensorFlow 的首屆開發者高峰會(2017 TensorFlow DevSummit)在美國的加州舉行。在會上,Google 公司宣佈正式發佈TensorFlow1.0 版本。本書就是以最新為基礎的1.1.0 版本來介紹TensorFlow 的技術解析和實戰。
人工智慧大潮來了。2016 年,AlphaGo 擊敗圍棋大師李世石後,人工智慧的應用仿佛一夜之間遍地開花。在科技潮流的大環境中,現在矽谷的用人單位越來越偏好雇用既懂理論(思考者)又懂程式設計(執行者)的工程師。思考者的日常工作是閱讀文獻以求產生想法,而執行者則是撰寫程式來實現應用。但是要...
目錄
前言
第一篇 基礎篇
01人工智慧概述
1.1 什麼是人工智慧
1.2 什麼是深度學習
1.3 深度學習的入門方法
1.4 什麼是TensorFlow
1.5 為什麼要學TensorFlow
1.6 機器學習的相關賽事
1.7 中國的人工智慧公司
1.8 小結
02 TensorFlow 環境的準備
2.1 下載TensorFlow 1.1.0
2.2 以pip 為基礎的安裝
2.3 以Java 為基礎的安裝
2.4 從原始程式碼安裝
2.5 依賴的其他模組
2.6 小結組
03 視覺化TensorFlow
3.1 PlayGround
3.2 TensorBoard
3.3 視覺化的實例
3.4 小結
04 TensorFlow 基礎知識
4.1 系統架構
4.2 設計理念
4.3 程式設計模型
4.4 常用API
4.5 變數作用域
4.6 批次標準化
4.7 神經元函數及最佳化方法
4.8 模型的儲存與載入
4.9 佇列和執行緒
4.10 載入資料
4.11 實現一個自訂操作
4.12 小結
05 TensorFlow 原始程式碼解析
5.1 TensorFlow 的目錄結構
5.2 TensorFlow 原始程式碼的學習方法
5.3 小結
06神經網路的發展及其TensorFlow 實現
6.1 旋積神經網路
6.2 旋積神經網路發展
6.3 MNIST 的AlexNet 實現
6.4 循環神經網路
6.5 循環神經網路發展
6.6 TensorFlow Model Zoo
6.7 其他研究進展
6.8 小結
07 TensorFlow 的進階架構
7.1 TFLearn
7.2 Keras
7.3 小結
第二篇 實戰篇
08第一個TensorFlow 程式
8.1 TensorFlow 的執行方式
8.2 超參數的設定
8.3
09 TensorFlow 在MNIST 中的應用
9.1 MNIST 資料集簡介
9.2 MNIST 的分類問題
9.3 訓練過程的視覺化
9.4 MNIST 的旋積神經網路
9.5 MNIST 的循環神經網路
9.6 MNIST 的無監督學習
9.7 小結
10人臉識別
10.1 人臉識別簡介
10.2 人臉識別的技術流程
10.3 人臉識別的分類
10.4 人臉檢測
10.5 性別和年齡識別
10.6 小結
11 自然語言處理
11.1 模型的選擇
11.2 英文數字語音辨識
11.3 智慧聊天機器人
11.4 小結
12影像與語音的結合
12.1 看圖說話模型
12.2 小結
13 產生式對抗網路
13.1 產生式對抗網路的原理
13.2 產生式對抗網路的應用
13.3 產生式對抗網路的實現
13.4 產生式對抗網路的改進
13.5 小結
第三篇 加強篇
14分散式TensorFlow
14.1 分散式原理
14.2 分散式架構
14.3 分散式模式
14.4 分散式API
14.5 分散式訓練程式架構
14.6 分散式最佳做法
14.7 小結
15 TensorFlow 線性代數編譯架構XLA
15.1 XLA 的優勢
15.2 XLA 的工作原理
15.3 JIT 編譯方式
15.4 JIT 編譯在MNIST 上的實現
15.5 小結
16TensorFlow Debugger
16.1 Debugger 的使用範例
16.2 遠端偵錯方法
16.3 小結
17 TensorFlow 和Kubernetes 結合
17.1 為什麼需要Kubernetes
17.2 分散式TensorFlow 在Kubernetes 中的執行
17.3 小結
18 TensorFlowOnSpark
18.1 TensorFlowOnSpark 的架構
18.2 TensorFlowOnSpark 在MNIST 上的實作
18.3 小結
19TensorFlow 行動端應用
19.1 行動端應用原理
19.2 iOS 系統實作
19.3 Android 系統實作
19.4 樹莓派實作
19.5 小結
20 TensorFlow 的其他特性
20.1 TensorFlow Serving
20.2 TensorFlow Flod
20.3 TensorFlow 計算加速
20.4 小結
21機器學習的評測系統
21.1 人臉識別的效能指標
21.2 聊天機器人的效能指標
21.3 機器翻譯的評價方法
21.4 常用的通用評價指標
21.5 小結
A 公開資料集
B 專案管理經驗小談
前言
第一篇 基礎篇
01人工智慧概述
1.1 什麼是人工智慧
1.2 什麼是深度學習
1.3 深度學習的入門方法
1.4 什麼是TensorFlow
1.5 為什麼要學TensorFlow
1.6 機器學習的相關賽事
1.7 中國的人工智慧公司
1.8 小結
02 TensorFlow 環境的準備
2.1 下載TensorFlow 1.1.0
2.2 以pip 為基礎的安裝
2.3 以Java 為基礎的安裝
2.4 從原始程式碼安裝
2.5 依賴的其他模組
2.6 小結組
03 視覺化TensorFlow
3.1 PlayGround
3.2 TensorBoard
3.3 視覺化的實例
3.4 小結
04 TensorFlow 基礎知識
4.1 系統架構
4.2 設計理念
4.3...
購物須知
關於二手書說明:
商品建檔資料為新書及二手書共用,因是二手商品,實際狀況可能已與建檔資料有差異,購買二手書時,請務必檢視商品書況、備註說明及書況影片,收到商品將以書況影片內呈現為準。若有差異時僅可提供退貨處理,無法換貨或再補寄。
商品版權法律說明:
TAAZE 單純提供網路二手書託售平台予消費者,並不涉入書本作者與原出版商間之任何糾紛;敬請各界鑒察。
退換貨說明:
二手書籍商品享有10天的商品猶豫期(含例假日)。若您欲辦理退貨,請於取得該商品10日內寄回。
二手影音商品(例如CD、DVD等),恕不提供10天猶豫期退貨。
二手商品無法提供換貨服務,僅能辦理退貨。如須退貨,請保持該商品及其附件的完整性(包含書籍封底之TAAZE物流條碼)。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱
退換貨原則、
二手CD、DVD退換貨說明。