本文由 TensorFlow 社區作者創作,文章已入選 “TensorFlow 開發者出道計劃” 精選推薦,關注 TensorFlow 社區,參與社區共建,點擊這里了解更多, 全能社區,一起建設!
目錄
系列開篇語
深度學習初探
是否需要深度學習
如何開始學習與選擇資料
尾巴
系列開篇語
寫深度學習博客有兩年多了,從最初的做記錄備忘到現在經驗總結分享,積累了一些讀者,也結識了不少想入門研究深度學習的朋友,有不少朋友私聊問小宋如何快速入門深度學習,我發現大部分小伙伴都是對這方面有興趣面對網上豐富的資料卻不知道如何選擇與操作,從而讓我萌發了寫一個一步步手把手帶大家如何從零開始學習,使得基礎薄弱的人員能以更簡單易懂的方式入門深度學習與實戰開發系列教程——《帶你學AI與TensorFlow2實戰》,

《帶你學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 社區,參與社區共建,點擊這里了解更多, 全能社區,一起建設!
CSDN認證博客專家
AI工程師
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/240945.html
標籤:AI
上一篇:回眸 2020,展望 2021



