整理 | 夕顏
出品 | AI科技大本營(ID:rgznai100)
【導讀】 TensorFlow 2.0 于近期正式發布后,立即受到學術界與科研界的廣泛關注與好評。此前,我們曾特邀專家回顧了 TensorFlow 2.0 從初版到最新版本的發展史。今天,我們將介紹一本全面詳解 TensorFlow 2.0 的手冊。這本手冊是 Google Summer of Code 2019 項目之一,從基礎安裝與環境配置、部署,到大規模訓練與加速、擴展,全方位講解 TensorFlow 2.0 的入門要點,并附錄相關資料供讀者參考。
這是一本簡明的 TensorFlow 2.0 入門指導手冊,基于 Keras 和 Eager Execution(即時運行)模式,力圖讓具備一定機器學習及 Python 基礎的開發者們快速上手 TensorFlow 2.0。
本手冊的所有代碼基于 TensorFlow 2.0 正式版及 beta1 版本。
中文指南:https://tf.wiki/
GitHub鏈接:https://github.com/snowkylin/tensorflow-handbook
文中的所有示例代碼:https://github.com/snowkylin/tensorflow-handbook/tree/master/source/_static/code/zh
本手冊所有章節如下圖,不僅包含 TensorFlow 的概述,還含有基礎、部署、大規模訓練與加速、擴展,以及附錄部分。
前言
此前,TensorFlow 所基于的傳統 Graph Execution 的弊端,如入門門檻高、調試困難、靈活性差、無法使用 Python 原生控制語句等早已被開發者詬病許久。一些新的基于動態圖機制的深度學習框架(如 PyTorch)也橫空出世,并以其易用性和快速開發的特性而占據了一席之地。尤其是在學術研究等需要快速迭代模型的領域,PyTorch 等新興深度學習框架已經成為主流。作者所在的數十人的機器學習實驗室中,竟只有其一人 “守舊” 地使用 TensorFlow。
然而,直到目前,市面上相關的 TensorFlow 相關的中文技術書籍及資料仍然基于傳統的 Graph Execution 模式,讓不少初學者(尤其是剛學過機器學習課程的大學生)望而卻步。由此,在 TensorFlow 正式支持 Eager Execution 之際,有必要出現一本全新的技術手冊,幫助初學者及需要快速迭代模型的研究者,以一個全新的角度快速入門 TensorFlow。
同時,本手冊還有第二個任務。市面上與 TensorFlow 相關的中文技術書籍大都以深度學習為主線,將 TensorFlow 作為這些深度學習模型的實現方式。這樣固然有體系完整的優點,然而對于已經對機器學習或深度學習理論有所了解,希望側重于學習 TensorFlow 本身的讀者而言,就顯得不夠友好。
于是,作者希望編寫一本手冊,以盡量精簡的篇幅展示 TensorFlow 作為一個計算框架的主要特性,并彌補官方手冊的不足,力圖能讓已經有一定機器學習 / 深度學習知識及編程能力的讀者迅速上手 TensorFlow,并在實際編程過程中可以隨時查閱并解決實際問題。
本書適用于以下讀者:
已有一定機器學習 / 深度學習基礎,希望將所學理論知識使用 TensorFlow 進行具體實現的學生和研究者;
曾使用或正在使用 TensorFlow 1.X 版本或其他深度學習框架(比如 PyTorch),希望了解 TensorFlow 2.0 新特性的開發者;
希望將已有的 TensorFlow 模型應用于業界的開發者或工程師。
提示:本書不是一本機器學習 / 深度學習原理入門手冊。若希望進行機器學習 / 深度學習理論的入門學習,可參考附錄中提供的一些入門資料。
學生和研究者:模型的建立與訓練
開發者和工程師:模型的調用與部署
TensorFlow 能幫助我們做什么?
TensorFlow 安裝與環境配置
TensorFlow 的最新安裝步驟可參考官方網站上的說明(https://tensorflow.google.cn/install)。TensorFlow 支持 Python、Java、Go、C 等多種編程語言以及 Windows、OSX、Linux 等多種操作系統,此處及后文均以 Python 3.7 為準。
提示
本章介紹在一般的個人電腦或服務器上直接安裝 TensorFlow 2.0 的方法。關于在容器環境(Docker)、云平臺中部署 TensorFlow 或在線上環境中使用 TensorFlow 的方法,見附錄 使用 Docker 部署 TensorFlow 環境和在云端使用 TensorFlow 。軟件的安裝方法往往具有時效性,本節的更新日期為 2019 年 10 月。
一般安裝步驟
GPU 版本 TensorFlow 安裝指南
GPU 硬件的準備
NVIDIA 驅動程序的安裝
CUDA Toolkit 和 cnDNN 的安裝
第一個程序
IDE 設置
TensorFlow 所需的硬件配置 *
TensorFlow 基礎
本章介紹 TensorFlow 的基本操作。
TensorFlow 1+1
自動求導機制
基礎示例:線性回歸
NumPy 下的線性回歸
TensorFlow 下的線性回歸
TensorFlow 模型建立與訓練
本章介紹如何使用 TensorFlow 快速搭建動態模型。
模型(Model)與層(Layer)
基礎示例:多層感知機(MLP)
數據獲取及預處理:tf.keras.datasets
模型的構建:tf.keras.Model 和 tf.keras.layers
模型的訓練:tf.keras.losses 和 tf.keras.optimizer
模型的評估:tf.keras.metrics
卷積神經網絡(CNN)
使用 Keras 實現卷積神經網絡
使用 Keras 中預定義的經典卷積神經網絡結構
循環神經網絡(RNN)
深度強化學習(DRL)
Keras Pipeline *
Keras Sequential/Functional API 模式建立模型
使用 Keras Model 的 compile 、 fit 和 evaluate 方法訓練和評估模型
自定義層、損失函數和評估指標 *
自定義層
自定義損失函數和評估指標
TensorFlow 常用模塊
tf.train.Checkpoint :變量的保存與恢復
TensorBoard:訓練過程可視化
tf.data :數據集的構建與預處理
數據集對象的建立
數據集對象的預處理
數據集元素的獲取與使用
實例:cats_vs_dogs 圖像分類
@tf.function :Graph Execution 模式 *
@tf.function 基礎使用方法
@tf.function 內在機制
AutoGraph:將 Python 控制流轉換為 TensorFlow 計算圖
使用傳統的 tf.Session
tf.TensorArray :TensorFlow 動態數組 *
tf.config:GPU 的使用與分配 *
指定當前程序使用的 GPU
設置顯存使用策略
單 GPU 模擬多 GPU 環境
TensorFlow 模型導出
使用 SavedModel 完整導出模型
Keras Sequential save 方法(Jinpeng)
TensorFlow Serving
TensorFlow Serving 安裝
TensorFlow Serving 模型部署
Keras Sequential 模式模型的部署
自定義 Keras 模型的部署
在客戶端調用以 TensorFlow Serving 部署的模型
Python 客戶端示例
Node.js 客戶端示例(Ziyang)
TensorFlow Lite(Jinpeng)
模型轉換
Android 部署
Quantization 模型轉換
總結
TensorFlow in JavaScript(Huan)
TensorFlow.js 簡介
瀏覽器中使用 TensorFlow.js 的優勢
TensorFlow.js 性能對比
TensorFlow.js 環境配置
在瀏覽器中使用 TensorFlow.js
在 Node.js 中使用 TensorFlow.js
在微信小程序中使用 TensorFlow.js
TensorFlow.js 模型部署
通過 TensorFlow.js 加載 Python 模型
使用 TensorFlow.js 模型庫
TensorFlow.js 模型訓練 *
TensorFlow 分布式訓練
當我們擁有大量計算資源時,通過使用合適的分布式策略,可以充分利用這些計算資源,從而大幅壓縮模型訓練的時間。針對不同的使用場景,TensorFlow 在 tf.distribute.Strategy 中為我們提供了若干種分布式策略,從而能夠更高效地訓練模型。
單機多卡訓練:MirroredStrategy
多機訓練:MultiWorkerMirroredStrategy
使用 TPU 訓練 TensorFlow 模型(Huan)
2017 年 5 月,Alpha Go 在中國烏鎮圍棋峰會上,與世界第一棋士柯潔比試,并取得了三比零全勝戰績。之后的版本 Alpha Zero 可以通過自我學習 21 天即可以達到勝過中國頂尖棋手柯潔的 Alpha Go Master 的水平。
Alpha Go 背后的動力全部由 TPU 提供,TPU 使其能夠更快地 “思考” 并在每一步之間看得更遠。
TPU 簡介
什么是 TPU
為什么使用 TPU
TPU 性能
TPU 環境配置
免費 TPU:Google Colab
Cloud TPU
TPU 基礎使用
TensorFlow Hub 模型復用(Jinpeng)
TensorFlow Datasets 數據集載入
Swift for TensorFlow (S4TF) (Huan)
S4TF 簡介
為什么要使用 Swift 進行 Tensorflow 開發
S4TF 環境配置
本地安裝 Swift for Tensorflow
在 Colaboratory 中快速體驗 Swift for Tensorflow
在 Docker 中快速體驗 Swift for TensorFlow
S4TF 基礎使用
在 Swift 中使用標準的 TensorFlow API
在 Swift 中直接加載 Python 語言庫
語言原生支持自動微分
MNIST 數字分類
TensorFlow in Julia(Ziyang)
TensorFlow.jl 簡介
為什么要使用 Julia ?
TensorFlow.jl 環境配置
在 docker 中快速體驗 TensorFlow.jl
在 julia 包管理器中安裝 TensorFlow.jl
TensorFlow.jl 基礎使用
MNIST 數字分類
圖模型下的 TensorFlow
TensorFlow 1+1
基礎示例:線性回歸
使用 Docker 部署 TensorFlow 環境
在云端使用 TensorFlow
在 Colab 中使用 TensorFlow
在 Google Cloud Platform(GCP)中使用 TensorFlow
在 Compute Engine 建立帶 GPU 的實例并部署 TensorFlow
使用 AI Platform 中的 Notebook 建立帶 GPU 的在線 JupyterLab 環境
在阿里云上使用 GPU 實例運行 Tensorflow(Ziyang)
部署自己的交互式 Python 開發環境 JupyterLab
TensorFlow 性能優化
參考資料與推薦閱讀
術語中英對照表
(中文)TensorFlow 中文社區 “簡單粗暴 TensorFlow” 版面:https://www.tensorflowers.cn/b/48 (中文的疑問和建議請來此處,將以中文回答和討論。歡迎使用中文的開發者們前來 TensorFlow 中文社區交流討論)
(英文)https://github.com/snowkylin/tensorflow-handbook/releases (英文的疑問或建議可在 GitHub issue 中提出,會以英文回答)
PDF 下載(舊版):
中文版:https://www.tensorflowers.cn/t/6230 (同時也有英文版下載)
英文版:https://github.com/snowkylin/tensorflow-handbook/releases
搜索頁面:https://tf.wiki/search.html
最后,我們有必要介紹一下《簡單粗暴TensorFlow 2.0》的作者李錫涵。
(圖片來源:領英)
據領英資料顯示,李錫涵是來自北大信息科學技術學院的準理科碩士生,擔任見習顧問和研究助理,2016年本科畢業于浙大竺可楨學院,并在 2015 年以交換生的身份進入交通大學。
李錫涵曾在微軟亞研院機器學習組實習,在谷歌還是機器學習方面的GDE(Google Developers Expert),目前的研究重點是基于圖的現實場景中多主體強化學習的應用。
【END】
安裝TensorFlow主要方法:
Ubuntu/Linux # 僅使用 CPU 的版本 $ pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl # 開啟 GPU 支持的版本 (安裝該版本的前提是已經安裝了 CUDA sdk) $ pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
本文重點介紹 Windows系統下的TensorFlow安裝,目前只支持 Python 3.5/3.6 (64bit)
Anaconda是一個開源的Python發行版本,其包含了conda、Python、numpy、pandas、matplotlib等180多個科學包及其依賴項。其中還包含Python3.6解釋器,避免重復安裝Python,anaconda是科學計算愛好者首選的IDE,強烈推薦大家使用。
Anaconda擁有第三方庫管理軟件Anaconda Navigator,可以使用Navigator安裝TensorFlow,且Navigator安裝第三方庫時,會自動安裝其他依賴庫(此比PyCharm更加人性),打開Navigator,使用如下步驟搜索TensorFlow,選擇安裝版本(Anaconda的下載請參考上期內容網址)
TensorFlow安裝
當安裝完成后,可以使用Spyder(anaconda自帶IDE)驗證TensorFlow是否安裝成功。
打開Spyder,輸入如下代碼運行:
import tensorflow as tf hello=tf.constant('Hello, TensorFlow!') sess=tf.Session() print (sess.run(hello)) >>>Hello, TensorFlow!#證明已經安裝成功
PyCharm是由JetBrains打造的一款Python IDE,帶有一整套可以幫助用戶在使用Python語言開發時提高其效率的工具。PyCharm可以在系統設置中,尋找TensorFlow安裝。使用PyCharm安裝第三方庫,主要的缺點是不能自帶安裝依賴庫,這點就沒有Aanconda人性。使用PyCharm安裝,你可能會遇到安裝第三方庫失敗的問題(推薦Anaconda Navigator)
PyCharm安裝TensorFlow
安裝完成后,使用如下代碼驗證你的安裝:
import tensorflow as tf hello=tf.constant('Hello, TensorFlow!') sess=tf.Session() print (sess.run(hello)) >>>Hello, TensorFlow!#證明已經安裝成功
當然除了以上方法,你也可以使用pip安裝,或者其他安裝方法。之所以介紹Anaconda與PyCharm,主要原因是這2個是主要Python愛好者的IDE,且都有優缺點。本人特別喜歡PyCharm的風格與代碼自動補全功能,特別喜歡Anaconda的安裝第三方庫的便捷性。當然你也可以使用Anaconda安裝第三方庫,使用PyCharm編寫你的工程,只要引用Anaconda的Python解釋器即可。
介紹TensorFlow的功能,利用代碼實現入手TensorFlow的學習
AI