初步了解TensorFlow框架學習
1.深度學習框架普及
如今,隨著深度學習技術(shù)的發(fā)展,學術(shù)界和工業(yè)界流行的深度學習框架很多,下面就給大家普及一下目前在學術(shù)和工業(yè)界較為流行的幾個深度學習框架,有助于大家今后對于深度學習進一步的學習。
1.1 TensorFlow
谷歌的TensorFlow是當今很受歡迎的機器學習框架,無論在學術(shù)界還是工業(yè)界都有一席之地。它可用于各類機器學習相關(guān)的任務中。Tensor即張量,也可以理解為多維度的向量,F(xiàn)low即流,代表基于數(shù)據(jù)流圖的計算。這是深度學習領(lǐng)域最為基礎(chǔ),也是最需要去掌握的框架。它支持Python、JavaScript、C ++、Java、Go和R等多種編程語言,同時還可以在iOS和Android等移動平臺上運行。由于TensorFlow使用靜態(tài)計算圖進行操作,即Flow流的含義。所以,在使用該框架進行模型構(gòu)建時,我們需要先定義圖形,即模型圖,然后再運行計算,如果需要對架構(gòu)進行更改,則需要重新訓練模型。這樣的方法是為了提高訓練效率,但是不能動態(tài)地去修改模型,必須等所有模型訓練結(jié)束后再進行模型調(diào)整。關(guān)于TensorFlow框架的學習,這里我建議大家可以去MOOC網(wǎng)上進行系統(tǒng)的學習,并且全課程免費,非常適合新手學習:??https://www.icourse163.org/course/youdao-1460578162??
1.2 Keras
在今后的TensorFlow的學習中,少不了使用Keras的地方。Keras也是一個對小白用戶非常友好的深度學習框架。如果想快速入門深度學習,Keras框架也是個不錯的選擇。Keras是TensorFlow高級集成API,可以非常方便地和TensorFlow進行融合。目前,2.0版本的TensorFlow框架插件庫已經(jīng)配備了Keras,因此可以在TensorFlow中很方便地使用Keras框架。使用Keras可以快速搭建深度學習模型,是學術(shù)研究高效進行的關(guān)鍵。因為Keras是高度模塊化,搭建網(wǎng)絡(luò)非常簡潔,同時API簡單,易擴展,易于添加新模塊。
2.Python必備知識
IT界流行一句話,即“人生苦短,我用Python”。所以不學點Python,在深度學習領(lǐng)域真的很難發(fā)展下去。不論是今后軟件開發(fā)還是算法設(shè)計,Python都是一把利器,也是在學術(shù)研究和求職中必備的一個開發(fā)語言。因此大家在學習TensorFlow之前,最好能有一些Python基礎(chǔ)知識,這樣學起來也容易掌握。這里提供一些必備的Python基礎(chǔ)知識。
(1)Python語言基本語法:程序的基本語法(程序的格式框架,縮進、注釋、變量、命名、保留字、數(shù)據(jù)類型、賦值、語句、引用)、基本輸入輸出函數(shù)(input() 、eval() 、print())。
(2)基本數(shù)據(jù)類置:數(shù)字類型(整數(shù)類型、浮點數(shù)類型和復數(shù)類型)、數(shù)字類型的運算(數(shù)值運算操作符、數(shù)值運算函數(shù))、字符串類型及格式化(索引、切片,基本的format()格式化方法)、字符串類型的操作(字符串操作符、處理函數(shù)和處理方法)、類型判斷和類型間轉(zhuǎn)換
(3)程序的控制結(jié)構(gòu):控制結(jié)構(gòu)(順序、選擇、循環(huán))、程序的異常處理
(4)函數(shù)和代碼復用:函數(shù)的定義和使用、函數(shù)的參數(shù)傳遞、變量(局部變量和全局變量)
(5)組合數(shù)據(jù)類型:列表類型(定義、索引、切片)和操作、字典類型和操作
(6)文件和數(shù)據(jù)格式化:文件的使用、數(shù)據(jù)的處理(表示、存儲和處理)
3.框架部署環(huán)境選擇
有了以上的基礎(chǔ)知識,機器學習框架的部署以及資源也尤為重要,目前主要使用的環(huán)境部署是Anaconda,通過下載好Anaconda,然后在Anaconda中進行資源選擇和環(huán)境部署,特別是CUDA的版本一定要和TensorFlow匹配。不然最后模型訓練會報錯。同時對于GPU和CPU的選擇也要確認好,建議GPU和CPU分別部署一個環(huán)境,這樣到時候訓練圖片類的數(shù)據(jù)集時,就切換成GPU版本,其他的訓練就切換成CPU版本,比較方便也不容易出錯。具體的部署操作網(wǎng)上有很多教程,在這里就不贅述了。至于代碼編輯器的使用,目前工業(yè)界普遍使用Pycharm,學術(shù)界普遍使用jupyter,各有各的優(yōu)勢所在,大家可以都體驗一遍,然后選擇適合自己的腳本編輯器即可。
開發(fā)環(huán)境準備操作,推薦新手可以參考MOOC課程,免費注冊學習:
4.個人推薦的部署資源環(huán)境
對于電腦設(shè)施比較優(yōu)越或者訓練一些少量數(shù)據(jù)集的模型的同學,在自己電腦上部署環(huán)境訓練模型是可行的,而且訓練速度也較快。但是對于大量數(shù)據(jù)集的復雜模型,有時候就不得不運用到一些線上的機器資源了,而模型訓練的機器資源也尤為緊缺,基本市面上大多數(shù)都是需要收費才能使用。在這里,為了大家以后能更好的進行模型訓練,我提供一個線上機器資源來供大家使用,并且是免費的。這個資源平臺就是九天畢昇平臺,算是目前最為良心的算力平臺,大家可以自行搜索進入官網(wǎng)注冊然后使用即可。至于進行模型訓練和部署的具體操作,后續(xù)我會詳細地介紹給大家。除此之外,TensorFlow官方也提供了免費的資源環(huán)境供用戶使用,詳情參考:
??https://www.icourse163.org/course/youdao-1467217161??,想快速了解模型部署,也可以去看看谷歌開發(fā)者專家這周做的一個線上講解和答疑:
??https://zhibo.51cto.com/liveDetail/373??
5.機器學習路徑與建議
使用框架時為了更好地實現(xiàn)或者運用機器學習知識,因此,最終的目的還是需要去掌握機器學習知識,利用這些知識去解決現(xiàn)實中的一些問題。要具備機器學習的思想,即現(xiàn)實中的任何事物在機器學習領(lǐng)域都可以用數(shù)據(jù)去表示,然后通過構(gòu)建模型去認識、學習或者識別這些數(shù)據(jù),從而找到數(shù)據(jù)之間的規(guī)律和特征,做到讓模型真正像人一樣去理解事物,從而使該模型具備處理該類事物的能力,運用在今后類似的事物或事件中。
因此,這里就涉及到了幾個問題:如何對事物進行數(shù)據(jù)化或者特征化、如何構(gòu)建模型、如何輸入模型、如何訓練模型、如何調(diào)整模型參數(shù)、如何衡量模型性能以及最后如何用該模型去解決現(xiàn)實中問題等,一個比較系統(tǒng)化的機器學習入門課提供給大家學習了解:
另外對于機器學習基礎(chǔ)知識感興趣的同學,我建議大家最好去閱讀下周志華的《機器學習》,俗稱西瓜書,這本書詳細地說明了機器學習的基礎(chǔ)理念,對于里面的數(shù)學公式大家可以根據(jù)自己的學習情況去選擇性掌握。想認真學習里面公式推導過程的同學,該書還配備了輔導工具書《機器學習公式詳解》(也叫南瓜書)。這里,我真誠建議大家去看下這兩本書,最好能做到熟悉西瓜書、了解南瓜書的程度。這樣對于今后的學習會大有裨益。
最后和大家分享一個關(guān)于部署的有獎問卷活動,感興趣的同學可以花5分鐘參與,有機會獲得限量的TensorFlow帆布包。只要三步就能完成,非常輕松。
1.戳鏈接填寫問卷
??https://wj.qq.com/s2/11353529/a72b/??
2.戳鏈接,在【課程評價區(qū)】留下有效評價
3.發(fā)送兩個截圖,添加小助手參與抽獎。
期待大家在機器學習的道路上愈發(fā)精進!
作者介紹
?稀飯,51CTO社區(qū)編輯,曾任職某電商人工智能研發(fā)中心大數(shù)據(jù)技術(shù)部門,做推薦算法。目前從事自然語言處理方向研究,主要擅長領(lǐng)域有推薦算法、NLP、CV,使用代碼語言有Java、Python、Scala。發(fā)表ICCC會議論文一篇。