『帶你學AI』帶你學AI與TensorFlow2實戰之入門初探:如何速成深度學習開發

本文由 TensorFlow 社區作者創作,文章已入選 “TensorFlow 開發者出道計劃” 精選推薦,關注 TensorFlow 社區,參與社區共建,點擊這裏瞭解更多。 全能社區,一起建設!

目錄

系列開篇語

深度學習初探

是否需要深度學習

如何開始學習與選擇資料

尾巴


系列開篇語

 

寫深度學習博客有兩年多了,從最初的做記錄備忘到現在經驗總結分享,積累了一些讀者,也結識了不少想入門研究深度學習的朋友。有不少朋友私聊問小宋如何快速入門深度學習,我發現大部分小夥伴都是對這方面有興趣面對網上豐富的資料卻不知道如何選擇與操作。從而讓我萌發了寫一個一步步手把手帶大家如何從零開始學習,使得基礎薄弱的人員能以更簡單易懂的方式入門深度學習與實戰開發系列教程——《帶你學AI與TensorFlow2實戰》

帶你學AI之系列開篇及深度學習初探

《帶你學AI》包括對於深度學習原理的直白講解與應用的開發實踐,代碼實現選擇了易用性與部署性俱佳的TensorFlow2框架。系列教程通過對學習方法講解以及環境手把手搭建,降低深度學習入門門檻,從而使小白用戶也能利用深度學習,應用到實際的生活與生產中。

 

小宋說:《帶你學AI》系列可能不是最專業嚴謹深奧的學習資料,而是希望要成爲一個淺顯易懂適合初學者的系列指南。私以爲,告訴大家如何去做不如去做,不如教大家如何去思考,和大家一起深度思考總結遠比教會一個技術更重要。

 

《帶你學AI》系列教程將分爲以下八個部分:

1. 系列開篇與入門方法講解·《帶你學AI與TensorFlow2實戰之入門初探》(本文)

2. 手把手環境搭建與開發環境配置·《帶你學AI與TensorFlow2實戰之工欲善其事》(待完成)

3. 手把手分類項目實戰講解·《帶你學AI與TensorFlow2實戰之分類項目實戰》(待完成)

4. 手把手目標檢測實戰講解·《帶你學AI與TensorFlow2實戰之目標檢測實戰》(待完成)

5. 手把手像素分割實戰講解·《帶你學AI與TensorFlow2實戰之像素分割實戰》(待完成)

6. 手把手NLP任務RNN文本分類實戰·《帶你學AI與TensorFlow2實戰之RNN文本分類實戰》(待完成)

7. 手把手NLP任務Transformer翻譯實戰·《帶你學AI與TensorFlow2實戰之Transformer翻譯實戰》(待完成)

手把手AI算法模型應用的部署·《帶你學AI與TensorFlow2實戰之AI算法模型應用》(待完成)

旨在通過對原理的通俗講解、學習方法的介紹培養、開發環境的手把手搭建、深度學習案例開發講解以及算法模型應用部署使用。

這是一個開源免費的教程,希望能和更多朋友一起分享貢獻,不斷完善。代碼與文檔將同步在GitHub:https://github.com/xiaosongshine/Learn2Ai4TensorFlow2

 

現在正式開始AI學習之旅嘍...


深度學習初探

 

寫這部分主要爲了解決如何入門深度學習方法論的問題,小宋總結了一些大家容易疑惑的問題,包括:

1、深度學習是什麼與傳統算法區別,我是否需要深度學習技術。

2、該如何開始學習與選擇資料

3、在學習的過程中遇到問題如何解決與尋求幫助

是否需要深度學習

 

 

 

 

可能有些朋友對深度學習感興趣是因爲這個技術最近比較流行,討論的人多,所以纔想上手這方面。小宋覺得有這樣從衆心理是沒有問題的,但是還有一句話很重要,適合自己的才更好。先搞清楚這個問題:

 

我是否需要深度學習技術,我打算用深度學習技術做什麼?

 

要想弄明白這個問題,首先我們要知道何爲深度學習:

 

其實深度學習並非新出現的技術,早在上世紀就被提出,經過數次起伏,最終纔在2012年的ImageNet大規模視覺識別挑戰賽(ILSVRC)通過AlexNet大放異彩(實現超越傳統方法9個百分點的效果)。也從而推進了以卷積神經網絡代表的深度學習在目標檢測追蹤,像素分割等任務發展與大規模應用。

 

深度學習是學習樣本數據的內在規律和表示層次,這些學習過程中獲得的信息對諸如文字,圖像和聲音等數據的解釋有很大的幫助。它的最終目標是讓機器能夠像人一樣具有分析學習能力,能夠識別文字、圖像和聲音等數據。 深度學習是一個複雜的機器學習算法,在語音和圖像識別方面取得的效果,遠遠超過先前相關技術。

 

上面是百度百科對深度學習概念的介紹,更加通俗的解釋爲:將神經網絡應用到機器學習領域中,替換掉繁雜的傳統機器學習手工設計特徵,通過神經網絡的表徵來自動或者半自動提取特徵從而實現某一功能。

 

經常與深度學習一起出現的還有這幾個名詞:人工智能 (AI)、機器學習以及神經網絡,上圖就是對它們關聯的描述。如果用一句話來概述這個圖,機器學習是實現人工智能的途徑,運用神經網絡的深度學習是機器學習中一個強有力的工具。

 

小宋說:深度學習技術之所以受大家歡迎,原因無外乎:使用簡便,效果好。而這離不開三個方面:數據、算法與算力,這一點在AlexNet大放異彩上體現的淋漓盡致。ImageNet大規模視覺識別數據集(數據),GPU大規模應用(算力),對LeNet的改造優化而來的AlexNet((算法))。所以如果當我們選擇使用深度學習時,需要考慮此場景是否能滿足這個條件,從而發揮出深度學習的功效。

 

通過上面的簡要介紹,大家可以對於人工智能、機器學習、深度學習及神經網絡有個粗略的認識與理解。現在到了關鍵問題,自己是否真的需要深度學習技術?

 

大家可以通過以下幾個簡單問題測試一下:

1,是否對深度學習感興趣打算從事相關工作?

2,所研究的領域是否可以獲取相關數據?

3,工作的環境或者將要工作環境是否有相應硬件算力支持?

4,是否目前傳統機器算法成爲目前的侷限,需要突破?

 

如果四個都是Yes,那麼我很建議你從事這方面,並堅信你將會在AI方面貢獻自己的一份力。

如果滿足以上三個條件,還是比較建議從事這方向,因爲有些問題可以在做的過程中,不斷改善。

如果僅滿足一兩個條件,就要好好考慮一下,是否要從事這方面工作,因爲可能你遇到的阻力會有些大。

 

小白說:我通過了上述測試,但是基礎一般,有些盲目,該怎麼辦呢?

小宋答:其實也不難,學這個也是有規律可循的,可以持續關注一下這個系列文章,小宋將手把手來帶大家上手學習。貴在堅持,小宋會持續做下去,也希望大家堅持學下去。

 

通過深度學習可以做很多有趣的項目,可以應用在工業上,提升檢測效率;也可以應用在農業上,提升資源利用率;也可以應用在製藥醫療等等。如果你也有趣的想法和創意,苦於不知道如何動手實踐,那就繼續往下看,下面有小宋爲基礎薄弱同學設計的學習方法。

 

如何開始學習與選擇資料

 

對深度學習有初步瞭解以後,就該考慮如何開始上手和資料選取。

雖然相較於幾年前學習資料匱乏,目前的情況已經好了很多,資料豐富多樣。這雖然降低了用戶查閱資料的成本,卻也增加了基礎薄弱同學的選擇成本。

雖說是深度學習開發,但其實覆蓋的內容還是很多的,包括開發環境,編程語言,常用工具包,深度學習框架等等。小白用戶還是很難掌握好步驟,如何一步步由淺入深,避免徘徊。

 

小宋說:其實小宋也不是“科班出身”的計算機相關專業學生,基礎也很薄弱在剛開始轉AI方面的時候也很迷茫,走了不少彎路。所以下面是小宋總結的由淺入深的學習資料,幫助大家更好更快的無痛入門。

 

其實學任何東西都是有途徑與方法的,只要我們能理清內部關聯就可以少走彎路。下面我們來一起梳理下:

 

1.操作系統的選取與內容學習

 

首先我們的算法開發要在一個系統平臺上,這裏就涉及到了一些與系統相關的內容。其實這對於小白用戶就是一個比較麻煩的點。大部分同學都是使用Windows系統或者macOS,而好多教程都是基於Linux系統(Ubuntu)開發講解,也都是推薦用戶使用Linux開發。這其實蠻不友好的,無形中增加了學習的門檻。

 

小宋說:但其實這是很次要的一點,小宋這樣認爲的原因有二:一是系統只是運行的平臺不是AI算法的核心;二是目前開發軟件與深度學習框架對於不同平臺支持差異已經很小了,區別僅僅是在多GPU調用在Windows平臺支持不完備,很多新算法會首先適配Ubuntu。這些點小白用戶幾乎察覺不到。而macOS平臺目前對GPU支持不太友好,如果需要大規模訓練不太建議使用,如果只是簡單試驗其實和Windows差不多的。

 

 

總結一下系統部分,Windows與Ubuntu都可以用來學習與開發深度學習,如果不嫌麻煩,就裝Ubuntu,支持會更好。後面《帶你學AI》系列教程環境配置方面會同時包括Windows10與Ubuntu18,同學們選擇自己習慣的就好。

 

系統方面真正要學習的技術點有Linux操作,需要掌握一些對於shell文件和目錄的管理和操作。

這裏推薦菜鳥教程中《Linux 教程》:https://www.runoob.com/linux/linux-tutorial.html

建議把Linux全部看完掌握,Shell複雜的一些指令可以用到再學。

 

 

 

小宋說:其實還有一些會遇到的工具,但是並非必須的,這裏就不重點推薦了。比如Shell指令Git操作這裏僅作爲補充說明,供學有餘力的同學翻閱了。

 

 

2.編程語言與開發軟件

 

編程語言其實沒什麼好選擇的,Python可能不是最好的語言,但的確是最適合做AI開發的語言。首先目前大部分深度學習框架對於Python接口都是最豐富完善的,而且Python語言上手簡單很適合小白用戶。這裏就直接推薦幾個比較好的教程:

1.菜鳥教程的Python3教程:https://www.runoob.com/python3/python3-tutorial.html。這個教程比較基礎,適合初學者入門使用

2.廖雪峯老師的Python3教程:https://www.liaoxuefeng.com/wiki/1016959663602400。這個教程有些高階操作,適合想要提升的同學

 

Python開發軟件比較常用的有PyCharm與VSCode。對於PyCharm有專業版和社區版之分,專業版收費功能更加豐富;社區版是開源免費的,功能有閹割,但是用來做深度學習開發還是夠用的。

 

小宋說:其實小宋最開始學Python用的就是PyCharm,給我的感觸是功能豐富整體也很繁雜臃腫,當時新打開一個項目都會加載很久,後來VSCode出現了,更加輕量化也很易用,對普通用戶更加友好。所以如果小夥伴們如果不是常用PyCharm,建議使用VSCode來開發。

 

 

 

後面《帶你學AI》系列教程環境配置方面會以VSCode爲例,由於VSCode多平臺支持的,所以會針對Ubuntu與Windows都會有使用教程說明。

 

3.學習框架與資料

 

《帶你學AI》系列教程將基於TensorFlow2.3,選擇TensorFlow2的原因是TensorFlow2相較於TensorFlow1.x更新爲動態圖,更加易用好學,同時部署性也極佳。會更加適用於大多數用戶。

 

同時TensorFlow2的資料也較爲豐富,易用學習與提升。下面有些總結的TensorFlow2,供小夥伴們參考:

 

1.官方資料:

中文官網: https://tensorflow.google.cn

教程: https://tensorflow.google.cn/tutorials

指南: https://tensorflow.google.cn/guide

 

2.TensorFlow2相關資料:

Dev Summit 開發者峯會總結:https://blog.csdn.net/tensorflowforum/article/details/111207490 

TensorFlow 2.4.0 候選版本發佈:https://blog.csdn.net/tensorflowforum/article/details/111032130 

如何將代碼遷移至 TensorFlow 2(視頻):https://live.csdn.net/v/118880 

一文看盡TensorFlow發展史:https://xiaosongshine.blog.csdn.net/article/details/102014069 

 

3.上手實戰資料和數據推薦

1)Keras之父作品《Python 深度學習》

《Python 深度學習》是由 Keras 之父、現任 Google 人工智能研究員 Francois Chollet 的作品

本書詳盡介紹了用 Python 和 Keras 進行深度學習的探索實踐,包括計算機視覺、自然語言處理、產生式模型等應用。

 

書中包含30多個代碼示例,步驟講解詳細透徹。由於本書立足於人工智能的可達性和大衆化,讀者無須具備機器學習相關背景知識即可展開閱讀。

學習完本書後,讀者將具備搭建自己的深度學習環境、建立圖像識別模型、生成圖像和文字等能力。

 

2)Xihan Li老師的《簡單粗暴 TensorFlow 2》

此學習手冊適用於以下讀者:

已有一定機器學習或深度學習基礎,希望將所學理論知識使用 TensorFlow 進行具體實現的學生和研究者;

曾使用或正在使用 TensorFlow 1.X 版本或其他深度學習框架(比如 PyTorch),希望瞭解和學習 TensorFlow 2 新特性的開發者;

希望將已有的 TensorFlow 模型應用於業界的開發者或工程師。

同時配套紙質完整版書籍,紙質版《簡明的 TensorFlow 2》由人民郵電出版社(圖靈社區)出版,在本在線手冊的基礎上進行了細緻的編排校對,並增加了若干 TensorFlow 高級專題,全綵印刷,爲讀者帶來更好的閱讀體驗。

 

 

小宋說:這些推薦教材可不是廣告哦,當然書籍作者大佬想給小宋打錢我也不介意哈哈~~,其實能給我郵寄個簽名就很滿足啦。真的是很優秀值得推薦的教材。也會是《帶你學AI》系列教程主要參考資料。

 

 

最後做一下總結:

 

1.首先我們的算法開發要在一個系統平臺上,這裏就涉及到了一些與系統相關的內容。選取Windows與Ubuntu都可以,Windows與Ubuntu都可以用來學習與開發深度學習,如果不嫌麻煩,就裝Ubuntu,支持會更好。

可以學習翻閱的資料有:菜鳥教程中《Linux 教程》https://www.runoob.com/linux/linux-tutorial.html

 

2.學習AI開發編程無法避免的,目前大部分深度學習框架對於Python接口都是最豐富完善的,而且Python語言上手簡單很適合小白用戶。

必備技能點Python及學習資料推薦:菜鳥教程的《Python3教程》 https://www.runoob.com/python3/python3-tutorial.html

編程也需要相關軟件:VSCode使用

 

3.學習框架選擇TensorFlow2,原因是TensorFlow2相較於TensorFlow1.x更新爲動態圖,更加易用好學,同時部署性也極佳。會更加適用於大多數用戶。

主要推薦這兩本書籍:

1)Keras之父作品《Python 深度學習》

2)Xihan Li老師的《簡單粗暴 TensorFlow 2

 

小宋說:其實上面內容略顯囉嗦(官方吐槽:),其實是想通過詳細的描述復現一下當想學習上手一門新技術時應該如何去選擇思考。希望小夥伴們看完這個能培養出一些自己思考習慣,再學習其他新技術或者技能的時候也能找到途徑與方法理清內部關聯就可以少走彎路。

如果小夥伴有什麼感想或者有其他好的思考方法也歡迎在評論區說出,小宋在這裏替大家先謝謝啦。

 

在學習的過程中遇到問題如何解決與尋求幫助

 

小宋說:上面一些內容主要對一些環境工具以及框架相關的介紹,下面就是針對於大家可能遇到的問題做些總結與經驗分享。包括遇到問題後該如何定位問題,該如何準確詳細描述問題,該在哪裏搜索答案與尋求幫助。

 

其實在網上去找一些資料開始學習,這些並不麻煩。但遇到一些沒見過的問題,確實是會讓人十分頭痛的。一個不起眼小問題往往會被困擾許久。其實我覺得專家與普通用戶的很重要的差異就是遇到和解決問題的多少,還有就是解決問題的途徑解決後的總結思考。這部分內容主要講解的就是解決問題的思路和方法方面的經驗,讓小夥伴們能更好的利用出現的問題提升自己。

 

 

 

下面就一些具體問題來分享一下解決方法與思路方面的經驗:

 

以初學者大多會遇到的安裝TensorFlow GPU學習框架出現問題舉例,因爲GPU依賴較多,這一步是很容易出問題的。首先我們先分解一下這個問題,安裝TensorFlow GPU版需要哪些支持,可以看看官網上安裝TensorFlow GPU的教程

 

硬件要求

支持以下帶有 GPU 的設備:

CUDA® 架構爲 3.5、3.7、5.2、6.0、6.1、7.0 或更高的 NVIDIA® GPU 卡。請參閱支持 CUDA® 的 GPU 卡列表。

在配備 NVIDIA® Ampere GPU(CUDA 架構 8.0)或更高版本的系統上,內核已從 PTX 經過了 JIT 編譯,因此 TensorFlow 的啓動時間可能需要 30 多分鐘。通過使用“export CUDA_CACHE_MAXSIZE=2147483648”增加默認 JIT 緩存大小,即可將此係統開銷限制爲僅在首次啓動時發生(有關詳細信息,請參閱 JIT 緩存)。

對於 CUDA® 架構不受支持的 GPU,或爲了避免從 PTX 進行 JIT 編譯,亦或是爲了使用不同版本的 NVIDIA® 庫,請參閱在 Linux 下從源代碼編譯指南。

 

軟件要求

必須在系統中安裝以下 NVIDIA® 軟件:

NVIDIA® GPU 驅動程序:CUDA® 10.1 需要 418.x 或更高版本。

CUDA® 工具包:TensorFlow 支持 CUDA® 10.1(TensorFlow 2.1.0 及更高版本)

CUDA® 工具包附帶的 CUPTI

cuDNN SDK 7.6

(可選)TensorRT 6.0,可縮短用某些模型進行推斷的延遲時間並提高吞吐量。

 

總結一下就是需要這些支持:

1.硬件要支持,需要有較新版本英偉達GPU

2.Cuda環境需要配置

3.Python開發環境配置

4.正確安裝TensorFlow GPU操作

 

小宋說:這些需要一步步檢查,必須確保沒有問題才能保證安裝的成功。經常有朋友給我私信說安裝TensorFlow GPU,卻無法定位到問題所在。其實這個只需要梳理一下依賴關聯,有些問題就比較容易解決。直接去問別人卻無法說明問題所在,有時真的是想幫也幫不了的。

 

小宋的建議:先自己簡單檢查一下可能出問題的支持和依賴,一步步由底層向上層測試,定位到問題所在:硬件是否支持,GPU驅動與Cuda是否安裝好,Python版本是否正確,安裝TensorFlow GPU操作步驟是否正確。

 

解決問題的第一步是定位問題

定位到具體問題所在才方便解決,無論是在查找資料還是請教別人時這些都很關鍵。

 

在定位到問題後,就是要查找答案和尋求幫助了,下面列舉一些尋找問題答案的網站:

 

● 谷歌

● 百度  https://www.baidu.com/

● CSDN https://www.csdn.net/

● 知乎  https://www.zhihu.com/

● GIthub https://www.github.com/

● Stack Overflow 如何優雅地使用 Stack Overflow?

 

這裏多介紹一下GIthub的使用,這可不僅僅是代碼開源平臺,善用上面的Issues內容可以大大提升解決問題效率。Issues是開源的問題與回覆彙總,開發人員常遇到的問題都在上面的,而且可以在上面提問,是個很好的工具。

 

 

 

這裏以TensorFlow 開源舉例 https://github.com/tensorflow/tensorflow/issues

 

可以在搜索框中搜索問題,推薦使用英語關鍵字搜索。可以搜不到可以把搜索框裏的"is:issue is:open"刪去代表搜索所有,如果不刪搜索條件就是open的issue代表尚未解決的問題。如果沒有找到相關問題,可以點擊"New issue"按鈕新建issue,選擇一個issue類型,就可以描述自己問題了,最後提交即可,就可以等着相關人員回覆:

 

 

 

 

其實在提交問題方面,也是有一些技巧的。

 

大部分朋友在問小宋的時候,往往僅僅是錯誤信息的截圖,其實錯誤信息的截圖是很重要的信息,但是這些錯誤信息是和硬件系統軟件版本與你的具體操作相關的。錯誤信息的截圖配合硬件、系統、軟件版本與你的具體操作纔是良好的提問題習慣,更有助於解決問題的。

 

最後心態方面,遇到問題不用覺得害怕。因爲只有在解決問題過程中我們才能不斷提升自己。想起了最近在看的一本書《反脆弱》,從不確定中受益。書中講到,人們都普遍害怕不確定情況和遇到問題,但如果可以卻避免這些會導致自身變得脆弱。

 

 

 

就像溫室裏的花朵,承受不住嚴寒和酷暑,而真實的世界更多的是後者。不要怕遇到問題,保持一個學習成長的心態,就會從解決問題中收穫很多。

 

尾巴

 

這是《帶你學AI》系列教程第一篇內容,主要是對於開篇的介紹以及對入門深度學習的一些經驗分享,寫的會比較細緻,是偏理論性與經驗性內容。可能會讓一些大佬覺得太瑣碎簡單,其實文章主要面向初學者,詳細覆盤了小宋思考的過程。授人以魚不如授人以漁,希望小夥伴們能通過這篇文章,培養起來一些針對問題的思考習慣。大家針對這個文章或者入門深度學習有什麼想法可以在評論區歡迎發表自己看法。

 

下篇內容將開始實戰操作,手把手環境搭建與開發環境配置(包括Ubuntu18以及Windows10),還是一樣的細緻入微,簡單易懂。不見不散。Keep Fighting。。。

 

 

同時推薦大家關注筆者公衆號“極簡AI”(ID:BriefAI),一起探討學習深度學習理論與應用開發技術。

歡迎大家關注小宋公衆號《極簡AI》帶你學深度學習:

​基於深度學習的理論學習與應用開發技術分享,筆者會經常分享深度學習乾貨內容,大家在學習或者應用深度學習時,遇到什麼問題也可以與我在上面交流知無不答。

出自CSDN博客專家&知乎深度學習專欄作家@小宋是呢

—————————————————————————————————————

本文由 TensorFlow 社區作者創作,文章已入選 “TensorFlow 開發者出道計劃” 精選推薦,關注 TensorFlow 社區,參與社區共建,點擊這裏瞭解更多。 全能社區,一起建設!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章