從來沒有這麼明白過:TensorFlow 上車就學會 | 運動資訊第一站 - 2024年11月
從來沒有這麼明白過:TensorFlow 上車就學會
TensorFlow2降低機器學習門檻,使機器學習無處不在!
TensorFlow 2是你最該學習的AI套件,將Keras整合之後,
一次學TensorFlow就學會Keras不用學兩次,用史上最強的人工智慧工具改變世界!
▌簡單明瞭、快速入門 ▌
本書簡單明瞭,可以讓初學者迅速進入TensorFlow的殿堂,讓你在起跑點就獲得渦輪一般的加速。
▌谷歌開發者專家 ▌
本書由谷歌開發者專家(機器學習領域)的大師級撰寫,將畢生功力以淺顯易懂的文字,引領初學者進入TensorFlow的殿堂,成為新一代機器學習大師。
▌易讀易懂、脈絡清晰 ▌
本書深入淺出,排版精美,十分易讀易懂。全書結構嚴謹、脈絡清晰,讓讀者可以輕鬆駕馭TensorFlow。
難得完整又詳細的TensorFlow 2的書籍,五大篇章包含:
.基礎篇:使用深度學習中常用的卷積神經網路、循環神經網路等網路結構為例,介紹 TensorFlow建立和訓練模型的方式。
.部屬篇:介紹在伺服器、嵌入式設備和瀏覽器等平台部署 TensorFlow模型的方法。
.大規模訓練篇:介紹了在 TensorFlow中進行分散式訓練和使用TPU訓練的方法,這也是TensorFlow獨享的,讓你能用比GPU更快速的TPU進行神經網路訓練
.擴展篇:介紹了多種 TensorFlow 生態系統內的常用及前端工具
.高級篇:為進階開發者介紹了 TensorFlow程式開發的更多深入細節及技巧。
如果你是TensorFlow 1.x的使用者,一定要升到2.x,再加上好用的Keras,一定以成為你開發AI專案的好幫手。
作者簡介
李錫涵
谷歌開發者專家(機器學習領域)
曾獲全國青少年信息學奧林匹克聯賽一等獎,美國大學生數學建模競賽特等獎。曾在多智能體會議AAMAS和自然語言處理會議COLING上發表學術論文。
現研究方向為強化學習在優化領域的實際應用。
開源在線入門手冊《簡單粗暴TensorFlow 2》作者。
李卓桓
谷歌開發者專家(機器學習領域)。
現任PreAngel合夥人,Plug and Play Ventures Partner,關注種子期AI創業項目。
曾任優酷網首席科學家、水木清華BBS站長、ChinaRen系統工程師。
擁有豐富的互聯網創業投資和編程經驗,著有《Linux網絡編程》《反垃圾郵件完全手冊》《智能問答與深度學習》《Chatbot從0到1:對話式交互設計實踐指南》等技術書。
GitHub 8000+ Star 開源項目 Wechaty 作者。
朱金鵬
前谷歌開發者專家(機器學習領域)
從事Android系統和運行時設計開發9年,在Android系統、運行時、機器學習等領域都有較深入的研究和探索。積極參與谷歌技術社區活動並進行技術分享。
0 TensorFlow 概述
第一篇 基礎篇
01 TensorFlow 的安裝與環境設定
1.1 一般安裝步驟
1.2 GPU 版本 TensorFlow 安裝指南
1.3 第一個程式
1.4 IDE 設定
1.5* TensorFlow 所需的硬體規格
02 TensorFlow 基礎
2.1 TensorFlow 1+1
2.2 自動求導機制
2.3 基礎範例:線性回歸
03 TensorFlow 模型建立與訓練
3.1 模型與層
3.2 基礎範例:多層感知器
3.3 卷積神經網路
3.4 循環神經網路
3.5 深度強化學習
3.6* Keras Pipeline
3.7* 自訂層、損失函數和評估指標
04 TensorFlow 常用模組
4.1 tf.train.Checkpoint:變數的保存與恢復
4.2 TensorBoard:訓練過程視覺化
4.3 tf.data:資料集的建置與前置處理
4.4 TFRecord:TensorFlow 資料集儲存格式
4.5* @tf.function:圖執行模式
4.6* tf.TensorArray:TensorFlow 動態陣列
4.7* tf.config:GPU 的使用與分配
第二篇 部署篇
05 TensorFlow 模型匯出
5.1 使用 SavedModel 完整匯出模型
5.2 Keras 自有的模型匯出格式
06 TensorFlow Serving
6.1 TensorFlow Serving 安裝
6.2 TensorFlow Serving 模型部署
6.3 在用戶端呼叫以 TensorFlow Serving 部署的模型
07 TensorFlow Lite
7.1 模型轉換
7.2 TensorFlow Lite Android 部署
7.3 TensorFlow Lite Quantized 模型轉換
7.4 小結
08 TensorFlow.js
8.1 TensorFlow.js 環境設定
8.2 TensorFlow.js 模型部署
8.3* TensorFlow.js 模型訓練與性能比較
第三篇 大規模訓練篇
09 TensorFlow 分散式訓練
9.1 單機多卡訓練:MirroredStrategy
9.2 多機訓練:MultiWorkerMirroredStrategy
10 使用 TPU 訓練 TensorFlow 模型
10.1 TPU 簡介
10.2 TPU 環境設定
10.3 TPU 基本用法
第四篇 擴展篇
11 TensorFlow Hub 模型重複使用
11.1 TF Hub 網站
11.2 TF Hub 安裝與重複使用
11.3 TF Hub 模型二次訓練範例
12 TensorFlow Datasets 資料集載入
13 Swift for TensorFlow
13.1 S4TF 環境設定
13.2 S4TF 基礎使用
14 TensorFlow Quantum:混合量子-經典機器學習
14.1 量子計算基本概念
14.2 混合量子-經典機器學習
第五篇 高級篇
15 圖執行模式下的 TensorFlow 2
15.1 TensorFlow 1+1
15.2 自動求導機制與最佳化器
15.3 基礎範例:線性回歸
16 tf.GradientTape 詳解
16.1 基本使用
16.2 監視機制
16.3 高階求導
16.4 持久保持記錄與多次求導
16.5 圖執行模式
16.6 性能最佳化
16.7 實例:對神經網路的各層變數獨立求導
17 TensorFlow 性能最佳化
17.1 關於計算性能的許多重要事實
17.2 模型開發:擁抱張量運算
17.3 模型訓練:資料前置處理和預先載入
17.4 模型類型與加速潛力的關係
17.5 使用針對特定 CPU 指令集最佳化的 TensorFlow
17.6 性能最佳化策略
18 Android 端側 Arbitrary Style Transfer 模型部署
18.1 Arbitrary Style Transfer 模型解析
18.2 Arbitrary Style Transfer 模型部署
18.3 小結
A.強化學習簡介
A.1 從動態規劃說起
A.2 加入隨機性和機率的動態規劃
A.3 環境資訊無法直接獲得的情況
A.4 從直接演算法到疊代演算法
A.5 大規模問題的求解
A.6 小結
B.使用Docker 部署TensorFlow 環境
C.在雲端使用 TensorFlow
C.1 在 Colab 中使用 TensorFlow
C.2 在 GCP 中使用 TensorFlow
D 部署自己的互動式 Python 開發環境 JupyterLab
E 參考資料與推薦閱讀
F 術語中英對照
序
2018 年 3 月 30 日,Google 在加州山景城舉行了第二屆 TensorFlow 開發者高峰會(TensorFlow Dev Summit),並正式宣佈發佈 TensorFlow 1.8。
作為首批機器學習領域的Google 開發者專家,我有幸獲得Google 的資助,親臨高峰會現場,見證了這一具有里程碑意義的新版本發佈。許多新功能的加入和支援展示了 TensorFlow 的雄心壯志,已經醞釀許久的即時執行模式(Eager Execution,或稱「動態圖模式」)在這一版本中終於正式獲得支援。
在此之前,TensorFlow 基於傳統的圖執行模式與階段機制(Graph Execution and Session,或稱「靜態圖模式」)的弊端已被開發者詬病許久,如入門門檻高、偵錯困難、靈活性差、無法使用 Python 原生控制敘述等。一些新的、基於即時執行模式的深度學習架構(如 PyTorch)從天而降,並以其便利性和快速開發的特性而佔據了一席之地。尤其是在學術研究等需要快速疊代模型的領域,PyTorch 等新興深度學習架構已成為主流。我所在的近二十人的機器學習實驗室中,竟只有我一人「守舊」地使用 TensorFlow。與此同時,市面上 TensorFlow 相關的中文技術書以及資料仍然基於傳統的圖執行模式與階段機制,這讓不少初學者,尤其是剛學過機器學習課程的大學生望而卻步。
因此,在 TensorFlow 正式支援即時執行模式之際,我認為有必要出現一本全新的入門書,幫助初學者及需要快速疊代模型的研究者,以「即時執行」的角度快速入門 TensorFlow。這也是我撰寫本書的初衷。本書自 2018 年春天開始撰寫,並於 2018 年 8 月在 GitHub 發佈了第一個中英文雙語版本,很快獲得了國內外不少開發者的關注。尤其是 TensorFlow工程總監 Rajat Monga、GoogleAI 負責人 Jeff Dean 以及 TensorFlow 官方社交媒體,他們對本書給予了推薦與關注,這給了我很大的鼓舞。
同時,我作為Google 開發者專家,多次受Google 開發者社區(Google Developers Group,GDG)的邀請,在 GDG DevFest、TensorFlow Day 和Women Techmakers 等活動中使用本書進行線下的 TensorFlow Codelab 教學。教學活動獲得了較好的反響,也收到了不少回饋和建議,這些都促進了本書的更新和品質改進。
2019 年 3 月的第三屆 TensorFlow 開發者高峰會,我再次受邀來到Google的矽谷總部,見證了 TensorFlow 2.0 alpha 的發佈。此時的 TensorFlow 已經形成了一個擁有龐大版圖的生態系統。TensorFlow Lite、TensorFlow.js、TensorFlow for Swift、TPU 等各種元件日益成熟。同時,TensorFlow2 加入了提升便利性的諸多新特性,例如以 tf.keras 為核心的統一高層API、使用 tf.function 建置圖模型、預設使用即時執行模式等,這使得對本書的大幅擴充和更新提上日程。Google 開發者社區中兩位 JavaScript和 Android 領域的資深專家李卓桓和朱金鵬也參與了本書的撰寫,這使得本書增加了諸多針對業界的 TensorFlow 模組詳解與實例。同時,我在Google 開發者大使(Developer Advocate)Paige Bailey 的邀請下申請並成功加入了 Google Summer of Code 2019 活動。作為全世界 20 位由Google TensorFlow 專案資助的學生開發者之一,我在 2019 年的暑期基於 TensorFlow 2.0 Beta 版本,對本書進行了大幅擴充和可讀性上的改進,使得本書從 2018 年發佈的小型入門指南逐漸成長為一本內容全面的TensorFlow 技術手冊和開發指導。
2019 年 10 月 1 日,TensorFlow 2.0 正式版發佈。本書也開始在TensorFlow 官方微信公眾號(TensorFlow_official)上長篇連載。在連載過程中,我收到了大量的讀者提問和意見回饋。在為讀者答疑的同時,我也修訂了書中的較多細節。2020 年 3 月,第四屆 TensorFlow 開發者高峰會在線上直播舉行。我根據高峰會的內容為本書增添了部分內容,特別是介紹了 TensorFlow Quantum 這一混合量子 – 經典機器學習函數庫的基本使用方式。我在研究所學生期間旁聽過量子力學,還做過量子計算和機器學習結合的專題報告。TensorFlow Quantum 的推出著實讓我感到興奮,讓我迫不及待地要把它介紹給讀者們。2020 年 4 月,我接受TensorFlow User Group(TFUG)和Google 開發者社區的邀請,依靠本書在 TensorFlow 官方微信公眾號上開展了「機器學習 Study Jam」線上教學活動,並啟用了 tf.wiki 中文社區進行教學互動答疑。同樣,此次教學也有不少學習者為本書提供了重要的改進意見。
由於我的研究方向是強化學習,所以在本書的附錄 A 中對強化學習進行了專題介紹。和絕大多數強化學習教學一開始就介紹馬可夫決策過程和各種概念不同,我從純動態規劃出發,結合實際算例來介紹強化學習,試圖讓強化學習和動態規劃的關係更清晰,以及對程式設計師更人性化。這個角度相比較較特立獨行,如果你發現了謬誤之處,也請多加指正。
其實在 2018 年秋天, 我就已經開始籌畫本書的出版事宜, 由於TensorFlow 版本疊代速度快,所以這個過程中多次對書中的內容進行了修訂與增加,導致本書的出版時間一再延後。在此書最後付梓時,TensorFlow 2.1 正式版已經發佈,其中修正了 TensorFlow 2 在使用中的諸多問題,使得 TensorFlow 2 的可用性和成熟度大為加強,適合進行大規模推廣普及。經過多次修訂後,書中的大部分內容也趨於穩定。因此,我認為現在(2020 年夏天)是出版本書的成熟時機。儘管如此,本書依然可能存在諸多缺陷、錯誤和過時之處,歡迎在 tf.wiki 中文社區或圖靈社區進行回饋。
本書的主要特點如下。
■ 主要基於 TensorFlow 2 最新的即時執行模式,以便模型的快速疊代開發,同時使用 tf.function 實現圖執行模式。
■ 定位為技術參考書,並以 TensorFlow 2 的各項概念和功能為核心進行編排,力求讓 TensorFlow 開發者快速查閱。各章相對獨立,不一定需要按順序閱讀。
■ 書中的程式均經過仔細推敲,儘量做到簡潔高效、表意清晰。模型實現均統一透過繼承 tf.keras.Model 和 tf.keras.layers.Layer 的方式,保障程式的高度可重複使用性。每個完整專案的程式總行數均不超過100,讀者可以快速了解並舉一反三。
■ 注重詳略,少即是多。不追求鉅細靡遺和面面俱到,不在正文中進行大篇幅的細節論述。
本書適合以下讀者閱讀:
■ 已有一定機器學習或深度學習基礎,希望將所學理論知識使用TensorFlow 進行實作方式的學生和研究者;
■ 曾使用或正在使用 TensorFlow 1.x 或其他深度學習架構(例如PyTorch),希望了解和學習 TensorFlow 2 新特性的開發者;
■ 希望將已有的 TensorFlow 模型應用於業界的開發者或工程師。
☘ 如何使用本書
建議已有一定機器學習或深度學習基礎,希望使用 TensorFlow 2 進行模型建立與訓練的學生和研究者,順序閱讀本書的基礎篇。為了幫助部分新入門機器學習的讀者了解內容,本書在基礎篇中提供了一些與行文內容相關的機器學習知識。這些內容旨在幫助讀者將機器學習理論知識與實際的 TensorFlow 程式碼進行結合,深入了解 TensorFlow 程式的內在機制,讓讀者在呼叫 TensorFlow 的 API 時能夠知其所以然。然而,這些內容對於沒有機器學習基礎的讀者而言是完全不夠的。若讀者發現閱讀這些內容有很強的陌生感,那麼應該先學習一些機器學習相關的基礎概念。部分章節的開頭提供了「前置知識」,方便讀者查漏補缺。
希望將 TensorFlow 模型部署到實際環境中的開發者和工程師,可以重點閱讀本書的部署篇,尤其是需要結合範例程式親手操作。不過,依然非常建議學習一些機器學習的基礎並閱讀本書的基礎篇,這樣有助更深入地了解 TensorFlow 2。
對於已有 TensorFlow 1.x 使用經驗的開發者,可以從本書的進階篇開始閱讀,尤其是第 15 章和第 16 章,隨後快速瀏覽基礎篇了解即時執行模式下 TensorFlow 的使用方式。在整本書中,帶 * 的部分均為選讀。
本書範例程式可至本公司官網下載, 網址為「deepmind.com.tw/, 選擇對應的書號下載。在使用時, 建議將程式的根目錄加入PYTHONPATH 環境變數,或使用合適的 IDE(如 PyCharm)開啟程式根目錄,這樣程式間可以順利地相互呼叫(形如 import zh.XXX 的程式)。