編輯推薦
√ TensorFlow 2.0與上一版對比,可以視為一個完全不同的深度學習框架,必須重學。
√ 面向套用落地,涵蓋圖像識別|對話機器人|生成網路圖片風格遷移|文本情感分析等。
√ 本書實戰樣例豐富,從TensorFlow模型訓練到生產環境部署,全程剖析AI系統開發。
√ 通俗易懂地講述人工智慧從基本原理到知識結構再到工業套用,非常適合突擊入門。
內容提要
《走向TensorFlow 2.0:深度學習套用編程快速入門》是TensorFlow 2.0編程實踐的入門類書籍,目的是在TensorFlow 2.0正式版發布之際能夠幫助大家快速了解其核心特性及基本編程技巧。本書通過5個常用的人工智慧編程案例,幫助大家掌握如何在工作中使用TensorFlow 2.0進行套用開發。
《走向TensorFlow 2.0:深度學習套用編程快速入門》內容覆蓋了Python和TensorFlow基礎入門、自然語言處理和CV領域的實踐案例、模型的服務化部署,希望在基於TensorFlow 2.0的人工智慧編程上能夠助你一臂之力。
目錄
第1章 Python基礎編程入門 1
1.1 Python的歷史 1
1.1.1 Python版本的演進 1
1.1.2 Python的工程套用情況 2
1.2 Python的基本數據類型 2
1.3 Python數據處理工具之Pandas 6
1.3.1 數據讀取和存儲 7
1.3.2 數據查看和選取 8
1.3.3 數據處理 11
1.4 Python圖像處理工具之PIL 14
1.4.1 PIL簡介 14
1.4.2 PIL接口詳解 14
1.4.3 PIL圖像處理實踐 18
第2章 TensorFlow 2.0快速入門 21
2.1 TensorFlow 2.0簡介 21
2.2 TensorFlow 2.0環境搭建 22
2.2.1 CPU環境搭建 22
2.2.2 基於Docker的GPU環境搭建 23
2.3 TensorFlow 2.0基礎知識 25
2.3.1 TensorFlow 2.0 Eager模式簡介 25
2.3.2 TensorFlow 2.0 AutoGraph簡介 26
2.3.3 TensorFlow 2.0低階API基礎編程 26
2.4 TensorFlow 2.0高階API(tf.keras) 32
2.4.1 tf.keras高階API概覽 32
2.4.2 tf.keras高階API編程 34
第3章 基於CNN的圖像識別套用編程實踐 36
3.1 CNN相關基礎理論 36
3.1.1 卷積神經網路概述 36
3.1.2 卷積神經網路結構 36
3.1.3 卷積神經網路三大核心概念 38
3.2 TensorFlow 2.0 API詳解 38
3.2.1 tf.keras.Sequential 39
3.2.2 tf.keras.layers.Conv2D 41
3.2.3 tf.keras.layers.MaxPool2D 42
3.2.4 tf.keras.layers.Flatten與tf.keras.layer.Dense 42
3.2.5 tf.keras.layers.Dropout 43
3.2.6 tf.keras.optimizers.Adam 43
3.3 項目工程結構設計 44
3.4 項目實現代碼詳解 44
3.4.1 工具類實現 45
3.4.2 cnnModel實現 46
3.4.3 執行器實現 48
3.4.4 Web套用實現 52
第4章 基於Seq2Seq的中文聊天機器人編程實踐 55
4.1 NLP基礎理論知識 55
4.1.1 語言模型 55
4.1.2 循環神經網路 57
4.1.3 Seq2Seq模型 59
4.2 TensorFlow 2.0 API詳解 61
4.2.1 tf.keras.preprocessing.text.Tokenizer 61
4.2.2 tf.keras.preprocessing.sequence.pad_sequences 62
4.2.3 tf.data.Dataset.from_tensor_slices 63
4.2.4 tf.keras.layers.Embedding 63
4.2.5 tf.keras.layers.GRU 63
4.2.6 tf.keras.layers.Dense 65
4.2.7 tf.expand_dims 65
4.2.8 tf.keras.optimizers.Adam 65
4.2.9 tf.keras.losses.SparseCategoricalCrossentropy 66
4.2.10 tf.math.logical_not 66
4.2.11 tf.concat 66
4.2.12 tf.bitcast 67
4.3 項目工程結構設計 67
4.4 項目實現代碼詳解 68
4.4.1 工具類實現 68
4.4.2 data_util實現 69
4.4.3 seq2seqModel實現 71
4.4.4 執行器實現 77
4.4.5 Web套用實現 83
第5章 基於CycleGAN的圖像風格遷移套用編程實踐 85
5.1 GAN基礎理論 85
5.1.1 GAN的基本思想 85
5.1.2 GAN的基本工作機制 86
5.1.3 GAN的常見變種及套用場景 86
5.2 CycleGAN的算法原理 88
5.3 TensorFlow 2.0 API詳解 88
5.3.1 tf.keras.Sequential 88
5.3.2 tf.keras.Input 91
5.3.3 tf.keras.layers.BatchNormalization 91
5.3.4 tf.keras.layers.Dropout 92
5.3.5 tf.keras.layers.Concatenate 93
5.3.6 tf.keras.layers.LeakyReLU 93
5.3.7 tf.keras.layers.UpSampling2D 93
5.3.8 tf.keras.layers.Conv2D 93
5.3.9 tf.optimizers.Adam 94
5.4 項目工程結構設計 95
5.5 項目實現代碼詳解 96
5.5.1 工具類實現 96
5.5.2 CycleganModel實現 100
5.5.3 執行器實現 105
5.5.4 Web套用實現 109
第6章 基於Transformer的文本情感分析編程實踐 111
6.1 Transformer相關理論知識 111
6.1.1 Transformer基本結構 111
6.1.2 注意力機制 112
6.1.3 位置編碼 116
6.2 TensorFlow 2.0 API詳解 117
6.2.1 tf.keras.preprocessing.text.Tokenizer 117
6.2.2 tf.keras.preprocessing.sequence.pad_sequences 118
6.2.3 tf.data.Dataset.from_tensor_slices 118
6.2.4 tf.keras.layers.Embedding 118
6.2.5 tf.keras.layers.Dense 119
6.2.6 tf.keras.optimizers.Adam 119
6.2.7 tf.optimizers.schedules.LearningRateSchedule 120
6.2.8 tf.keras.layers.Conv1D 120
6.2.9 tf.nn.moments 121
6.3 項目工程結構設計 121
6.4 項目實現代碼詳解 122
6.4.1 工具類實現 122
6.4.2 data_util實現 124
6.4.3 textClassiferMode實現 128
6.4.4 執行器實現 138
6.4.5 Web套用實現 142
第7章 基於TensorFlow Serving的模型部署實踐 144
7.1 TensorFlow Serving框架簡介 144
7.1.1 Servable 145
7.1.2 Source 145
7.1.3 Loader 145
7.1.4 Manager 145
7.2 TensorFlow Serving環境搭建 146
7.2.1 基於Docker搭建TensorFlow Serving環境 146
7.2.2 基於Ubuntu 16.04搭建TensorFlow Serving環境 146
7.3 API詳解 147
7.3.1 tf.keras.models.load_model 147
7.3.2 tf.keras.experimental.export_saved_model 147
7.3.3 tf.keras.backend.set_learning_phase 148
7.4 項目工程結構設計 148
7.5 項目實現代碼詳解 149
7.5.1 工具類實現 149
7.5.2 模型檔案導出模組實現 150
7.5.3 模型檔案部署模組實現 150
7.5.4 Web套用模組實現 152
精彩節摘
推薦序
AlphaGo以“Master”(大師)作為ID,橫空出世,在中國烏鎮圍棋峰會上,它與世界圍棋冠軍柯潔對戰,在圍棋領域,擊敗人類精英。
繼而,AlphaGo Zero,從空白狀態起步,在無任何人類輸入的條件下,能夠迅速自學圍棋,並以100∶0的戰績擊敗人類“前輩”。
機器學習,在嘗試以人類經驗圖譜進行學習時,短短數年,就在圍棋領域,擊敗了擁有幾千年沉澱的人類頂尖高手。
如果說這是機器的力量,那么AlphaGo Zero在嘗試不以人類的經驗圖譜進行自我深度學習時,產生了另一個質的飛躍,這,就是機器學習的力量。
機器學習作為人工智慧的一種類型,可以讓軟體根據大量的數據來對未來的情況進行闡述或預判。這項技術,可以通過人類經驗學習和自我深度學習,幫助人類在各個領域取得突破性進展。如今,領先的科技巨頭無不在機器學習方面予以極大投入。Google、蘋果、微軟、阿里巴巴、百度,無不深度參與,期望成為機器學習技術的鋪路者、領路者、踐行者。
未來是什麼樣子的,沒人說得清,但是未來在一步步來臨的路上,必然有機器學習技術的鋪墊。
2011年,“谷歌大腦”開始開展面向科學研究和工程套用的大規模深度學習。TensorFlow是Google第二代機器學習系統。如今,Google將此系統開源,並將此系統的參數公布給業界工程師、學者和大量擁有編程能力的技術人員,正是為了讓全世界的人都能夠從機器學習與人工智慧中獲益。
TensorFlow社區,是機器學習領域內最活躍和友善的社區之一。社區的好處,在於學習的路上,有很多人同行,你的任何問題和疑惑,在社區中都能得到相當不錯的答案。如果你想了解和學習機器學習,那么TensorFlow是一個相當不錯的選擇。如果你想學習TensorFlow,那么這本書會讓你以最低難度領略機器學習的奧秘。
我可以代表這樣一類人,作為多年的技術工作者,在工作中和機器學習也有一些接觸,對機器學習有比較濃厚的興趣。拿到這本書,相見恨晚,翻閱著,用電腦作為武器,按照書中所示,比畫著,一招一式中,不覺間就進入了機器學習的奇妙世界。這也使我通過學習機器如何進行自我深度學習,讓自己從另一個角度進行思考,得到收穫。
英俊的這本書,書如其名,內容英朗俊秀,深入淺出,淺顯易懂,思在天地,行在山野。
推薦讀者群體:期望入門機器學習的學生、技術工作者及其身邊的人。如果你恰好是其中一類人,又讀到了這裡,這本書請不要錯過,因為你閱讀的書中項目可能會比Android系統更加深遠地影響著世界!
阿里巴巴菜鳥網路技術專家 薛巍
中國,杭州
2019年9月
作者簡介
趙英俊
阿里雲人工智慧領域MVP,目前在阿里雲從事產業、工業智慧型方向的解決方案架構師工作,基於數據智慧型、人工智慧等技術和產品解決傳統產業、工業的痛點和難點問題。現個人維護一個優秀的開源NLP項目——基於Seq2Seq的中文智慧型聊天機器人,目前GitHub stars超過1100。
媒體評論
本書探討了開源機器學習軟體庫TensorFlow 2.0的諸多套用實踐,內容涵蓋各種熱門的套用場景,包括圖像識別、自然語言對話機器人、基於生成網路的圖片風格遷移、文本情感分析等。該書是為“套用落地”而編寫的,每章均附有大量的代碼和注釋,幫助讀者更快地入門和實現套用落地。本書前兩章分別介紹了Python的用法和TensorFlow的基礎,在最後一章又探討了如何將TensorFlow所訓練的模型部署到生產環境中。本書對有志於在相關領域進行研究並快速產出原型的技術人員具有很高的參考價值。
壽黎但
浙江大學計算機學院教授
深度學習在工業領域逐步得到套用,尤其是其與物聯網的結合,在智慧型家居、智慧城市、智慧交通、智慧醫療、智慧教育、智慧工業等多種行業場景中具有廣闊的發展空間。而在這一發展過程中,培養合格的人工智慧與物聯網結合方向的研發人才,實現人工智慧技術在工業套用領域的技術落地和實際套用,是人工智慧領域教育培訓的一個重要方向。本書詳細介紹了深度學習基本原理和基於TensorFlow 2.0的編程實踐入門,可以為人工智慧領域的入門讀者提供非常好的實踐導引。
董亞波
浙江大學計算機學院副教授,人工智慧研究所副所長
在與本書作者的項目合作中,藉助其豐富的TensorFlow開發經驗,使得項目得以順利進行。有幸能夠看到本書樣章,書中內容短小精悍,有大量實戰樣例。讀者閱讀本書後,能夠快速走進以TensorFlow 2.0為基礎的AI系統開發領域。
牟磊育
中國地震局地球物理研究所 地震數據質量人工智慧檢測項目負責人
這一波人工智慧浪潮與以往我們所討論的人工智慧最大的不同,就是其已經迅速在工業領域進行套用。網際網路+人工智慧+大數據的時代正在到來,新一代人工智慧正加速推進經濟向智慧型化躍升。因此,投資界非常看好目前人工智慧在IOT、5G等方向的套用前景。本書作者以深厚的專業知識和多年的實踐經驗,由淺入深,用生動語言講述了人工智慧的基本原理、知識結構、工業套用。相信此書能夠為人工智慧愛好者,以及在此領域開展技術研究的讀者提供一個通俗易懂的入門導引,幫助讀者更快捷地進入人工智慧套用領域。
詹家芳
原德國林德工程(杭州)有限公司總經理,留美碩士
前言
坦白地說,在我的技術生涯規劃中還未想過要在30歲生日之前出一本技術書。在30歲這一年裡,我感覺有280天以上是每天工作超過12小時的,每天我積極處理工作上的事情以求在事業上取得成就、學習自己欠缺的技術以求提升能力、輸出自己學到的知識以期幫助更多的人;在30歲這一年裡,我第一次體會到頸椎病帶來的痛苦,也將一直引以為傲的視力熬成了近視。之所以如此逼自己,大概是因為自己的不自信和痴痴的責任心在作祟。
創作初衷
最開始籌劃這本書的時候,也只是想將自己在小象學院的課程內容整理成書(課程內容是關於TensorFlow 1.x的),但是當看到TensorFlow 2.0發布計畫公布之後,我又覺得寫一本關於TensorFlow 1.x的書是沒有意義的,並且會浪費讀者的時間和精力。因此,我徹底推翻書稿原來規劃的內容,重新調整所有的知識點,所有的實踐案例都用TensorFlow 2.0進行重新編程,從而導致交稿日期一拖再拖。說到這裡,我要特別感謝電子工業出版社的張春雨老師,他一直在推動、鼓勵甚至督促我,使我跌跌撞撞、寫寫停停完成了初稿、提升稿、提交稿。在本書寫作過程中,江郎才盡和被掏空的感覺對我來說是最大的煎熬。我一直是一個喜歡分享知識和觀點的人,但是這種成體系的、持續的、面向大眾的分享和輸出讓我對自己的要求不斷提高,總是擔心如果寫錯了會誤人子弟。這不是一個輕鬆的過程,尤其是在創業的初期,我首先要做的是全力以赴、出色地完成產品和技術工作,然後用本來就不多的休息時間來完成技術的提升和本書的編寫。從一個追求技術深度的技術人員的視角來看,本書不能令我百分百滿意,但是萬事總要邁出第一步,希望這本書能夠為讀者帶來一定的參考和學習價值。
內容結構
本書在內容規劃上分3個部分,共7章,具體如下。
第1部分:編程基礎入門,包括Python基礎編程入門和TensorFlow 2.0快速入門知識。
第1章 Python基礎編程入門:本章闡述了Python的歷史、基本數據類型、數據處理工具Pandas、圖像處理工具PIL等,基本覆蓋了在後續章節中要用到的Python編程知識和工具。
第2章 TensorFlow 2.0快速入門:本章從快速上手的角度,通過TensorFlow 2.0的簡介、環境搭建、基礎知識、高級API編程等內容詳細講解了TensorFlow 2.0編程所需的知識和技巧。
第2部分:TensorFlow 2.0編程實踐,講解了4個編程案例,分別為基於CNN的圖像識別套用、基於Seq2Seq的中文聊天機器人、基於CycleGAN的圖片風格遷移套用、基於Transformer的文本情感分析。
第3章 基於CNN的圖像識別套用編程實踐:本章介紹了基於CNN實現對CFAIR-10圖像數據的訓練以及線上圖像分類預測,包括CNN基礎理論知識、編程中用到的TensorFlow 2.0 API詳解、項目工程結構設計、項目實現代碼詳解等。
第4章 基於Seq2Seq的中文聊天機器人編程實踐:本章介紹了基於Seq2Seq實現對“小黃雞”對話數據集的訓練以及線上中文聊天,包括自然語言模型、RNN(循環神經網路)、Seq2Seq模型、編程中用到的TensorFlow 2.0 API詳解、項目工程結構設計、項目實現代碼詳解等。
第5章 基於CycleGAN的圖片風格遷移套用編程實踐:本章介紹了基於CycleGAN實現對Apple2Orange數據集的訓練以及圖像線上風格遷移,包括GAN基礎理論知識、CycleGAN算法原理、編程中用到的TensorFlow 2.0 API詳解、項目工程結構設計、項目實現代碼詳解等。
第6章 基於Transformer的文本情感分析編程實踐:本章介紹了基於Transformer的變形結構實現對IMDB評價數據集的訓練以及線上對文本的情感分析和預測,包括Transformer基本結構、注意力機制、位置編碼、編程中用到的TensorFlow 2.0 API詳解、項目工程結構設計、項目實現代碼詳解等。
第3部分:TensorFlow 2.0模型服務化部署,採用TensorFlow Serving實現對完成訓練的模型進行生產環境的服務化部署。
第7章 基於TensorFlow Serving的模型部署實踐:本章介紹了基於TensorFlow Serving框架實現對基於CNN的圖像分類模型的服務化部署,包括TensorFlow Serving框架簡介、TensorFlow Serving環境搭建、編程中用到的TensorFlow 2.0 API詳解、項目工程結構設計、項目實現代碼詳解等。
致謝
最後,衷心感謝我的妻子包佳楠,感謝她一直以來的鼓勵,以及一絲不苟地校正書稿中的語法錯誤和錯別字,每次當我想要放棄的時候,她總是用幾句不輕不重的話語讓我重新回到本書的編寫中來。