如何高效的學習 TensorFlow 代碼? 或者如何掌握TensorFlow,應用到任何領域?php
有同窗反應資源太多不知道從何看起,或者有點基礎了想快速上手,所以就直接把幾個比較好的教程放在這裏,後面的內容做爲參考。html
有些技術(網絡方面)在知乎是不適合公開討論的,所以仍是要貼上本身這篇博客的連接:新手向的TensorFlow學習之路2(Learning paths 2)java
前言:其實TensorFlow自己僅僅是一個分佈式的高性能計算框架,想要用TF作深度學習,僅僅學習這個框架自己是沒有太大意義的。所以應該將TF看做技術路線中的一個核心點,去掌握整個開發所須要的必要技術,知識。尤爲是深度學習的基本原理,這對往後搭建模型,模型調參以致提出新的模型都是極其有用的。python
第一篇學習之路寫於2016年6月份,時過境遷,特別是深度學習這個突飛猛進的領域,隔了那麼久,不得不說已經有些過期了,而且隨着學習的深刻,愈加以爲以前的學習之路過於籠統,加之TensorFlow發佈了1.0正式版,所以整理一下,再次寫一篇。此次在內容的結構上將會大致分爲三種,首先是公共基礎部分,這個無需多解釋。另外,一個是偏向應用性質的快節奏(fast peace),針對不想也不必深刻了解理論知識但願儘快應用的人羣,另外一種是偏向研究性質的人羣(hard way),針對例如研究生之類但願深刻理論知識的人羣。固然,hard way的前提是fast peace。可是寫法上,並無分別寫,由於某種意義上這兩種是相互包含的,分開寫會顯得冗長與重複,所以採用粗體標記提示特定部分是屬於哪種。react
1. 穩定的網絡【公共基礎】:這是個不是技術的技術,TensorFlow畢竟出自Google,官方文檔訪問不是很穩定。linux
2. Github【公共基礎】:這是個開源程序的網站,Linux內核在這個網站也有鏡像。Github的核心是Git,一種版本控制系統,已經逐漸取代SVN。這個網站託管了不少高質量的或者說世界頂尖的開源項目,好比TensorFlow。學習一下這個網站如何使用,註冊個帳號,學習一下Git的使用方法。這個網站有本身的tutorial和guide。並且後期本身的項目管理多半也會用到git,因此,早點學習確定是有好處的。android
【fast peace(即簡略的快節奏教程,下同)】:git
1. Git 參考手冊(推薦)github
2. git – the simple guideweb
【hard way(即大而全的完整或者正式教程,下同)】:
3. Git Tutorial
3. Python【公共基礎】:這是一種很是流行的腳本語言,龐大的第三方庫能夠快速寫出短小容易理解的代碼,並且也是TensorFlow的推薦開發語言。不只僅是對於TensorFlow這門語言很重要,對於整個機器學習,應用層面放眼望去基本就是Python與R的天下了,而R更偏向與統計學領域,深度學習Python簡直是紅透了半邊天,固然我是針對初學者,若是已經掌握了其餘語言,例如Java,C++,那麼其實理論上而言能夠不用掌握Python,選擇本身熟悉的語言的API便可。可是對於TensorFlow,只有Python的API最全面,文檔社區也最完善(截至2017年3月),固然隨着TensorFlow的發展都會完善,但是如今就要用呀:)。並且,最重要的是,對於已經掌握其餘語言的人來講,學習Python不會花費過久的。而且,Pytohn寫起來短小精悍,易於理解,很適合這種用來搭架子調用框架並且不怎麼須要考慮效率的場景(通常來說,最須要效率的部分框架會用C++實現,Python僅僅是做爲頂層去調用)。另外,推薦學習Python3,這纔是Python的將來,2.7的支持在2020年會中止。並且,後面會知道的,對於Python2.7向3的支持不少狀況僅僅是import幾個future包。
【fast peace】:
1. Tutorial – Learn Python in 10 minutes
【hard way】:
1. 廖雪峯的Python教程
4. Linux【公共基礎】:TensorFlow的主要運行平臺之一就是Linux,可是正式版對Windows的支持日趨完善,真的沒時間學習Linux平臺能夠先在Windows上運行TensorFlow。不過,學習Linux真的用不了多久(固然是指作開發環境平常日用,立志作系統管理員仍是要下一番功夫的)。推薦Ubuntu 16.04 LTS,這不只是「新手友好」的發行版,也是Google不少產品的官方支持版本,官方支持就會帶來不少便捷以及少一些」坑「。LTS(長期支持版本)的加成保證了系統的穩定(穩定不只指運行穩定,更是指軟件環境,例如python不會忽然默認變成3.6,gcc不會忽然就默認變成6,插一句,之因此這麼說,是由於之前用的是Arch,裝了TensorFlow一直跑的很開心,直到有天忽然發現跑不起來了,原來是Arch升級了一下Python的默認版本變成了3.6了XD。)
【fast peace】:
1. 個人知乎回答
【hard way】:
1. UNIX Tutorial for Beginners
3. Linux工具快速教程
5. 深度學習–概念與基礎:
【fast peace】(偏向概念介紹,introduction):
1. 深度學習wiki
【hard way】(偏向概念解釋,數學推導,基本原理):
兩本經典中的經典書籍:第一本傾向於理論闡述,第二本則是傾向於直觀解釋。
2. Neural Networks and Deep Learning
第三本則是代碼應用向的,使用Theano從零搭建各類常見的網絡結構,雖然是Theano,可是基本思想是統一的。
6. Python經常使用科學計算庫【公共基礎】:
1. Numpy
2. Sklearn
3. Matplotlib
4. Pandas
雖說是公共基礎部分,可是系統學習這幾個庫,也不是一件容易的事,並且很耗時間。所以仍是遵循夠用便可的原則。可是仍是想列在這裏,由於後來發現若是這幾個庫掌握的比較熟練,數據預處理後處理都能極大地節省時間,當你還在苦苦想如何設計預處理方法的時候,其實去查一查手冊,大機率在這幾個庫裏已經寫好了。這幾個庫的官方文檔都很優秀,好比Pandas的10 Minutes to pandas。所以,閒餘時間多看看官方tutorial便可。
7. TensorFlow:
【fast peace】(偏向應用性質,到手即用,pretrained-models,tflearn,keras等):
1. TensorFlow的白皮書,對TensorFlow的總體有個把握或者說印象是頗有必要的,對後期的「圖編程」,優化,都頗有啓發。
2. TFLearn,基於TensorFlow的高級API,不須要了解太多細節,應用向的能夠直接看這個。
3. TFSlim,基於TensorFlow的高級API,和TensorFlow契合度更好。
4. Keras,高級API,後端可使用TensorFlow(默認)
【hard way】(偏向理論性質,調用基本API手寫,自定義layer,自定義kernel,自定義optimizer等):
8. 論文閱讀路線圖【hard way】: github上有個頗有名的Deep Learning papers reading roadmap,已通過萬stars,從事深度學習科研者的必讀清單,在我寫的上一篇學習之路中,雖然整理了不少論文,可是過於雜亂,在此就不作引用啦。
9. 相關博客等其餘資源:
10. 不錯的資源類網站:
---------------------------------舊答案的分割線---------------------------------
已更新。
發一波預告~最近剛用tensorflow搞完一個算是接近實際而且帶有移動端應用外加inception retrain的項目,打算考試結束更新一波~:)
TensorFlow已經發布1.0版本!
已更新。
近期更新計劃:
1.從新整理Learning path,將各個部分更加詳盡闡述,同時給出合適的快速入手教程。
2.及時跟進最新進展,刪除陳舊信息。
我在blog中總結了學習路線,針對新手。
新手向的Tensorflow學習之路(Learning paths)
文中的教程或者blog以及論文書籍基本上都是經典,推薦入門學習。
貼在這裏:
在學習Tensorflow的過程當中磕磕碰碰,總結一些我的心得記錄於此,志同道合之友共勉~~
1.穩定的網絡:Tensorflow畢竟出自Google,官方文檔訪問不是很穩定。並且通常來講,對於英文的文檔,資料和疑問,Google搜索的結果要比Baidu好不少。(不是偏見,是各有所長,天氣地圖電影啥的,百度仍是作的很好的)
2.Github:這是個開源程序的網站,Linux內核就在這個網站託管。Github的核心是Git,一種版本控制系統,已經逐漸取代SVN。這個網站託管了不少高質量的或者說世界頂尖的開源項目,好比Tensorflow。學習一下這個網站如何使用,註冊個帳號,學習一下Git的使用方法。這個網站有本身的tutorial和guide。
3.Linux: Tensorflow的主要運行平臺就是Linux,目前在Windows上運行的方案是虛擬機,可是深度學習對計算要求仍是比較高的,虛擬機效率不是過高,所以仍是推薦在原生Linux中運行。新手推薦發行版是Ubuntu 或者Linux mint。這個能夠自行搜索。學習Linux也有不少好處,由於不少開源軟件都only linux的。
4.Python:這是一種很是流行的腳本語言,龐大的第三方庫能夠快速寫出短小容易理解的代碼,並且也是Tensorflow的推薦開發語言。教程太多了,這裏給幾個優秀的教程:官網教程,Learn Python the Hard Way,Python2.7教程
5.深度學習(Deep Learning,DL):雖然Tensorflow已經封裝好了大部分DL的細節,可是若是不瞭解DL的相關核心概念,就會很難着手分析問題。首先強烈推薦這個教程,通讀一遍,而後還有這個,能夠快速瀏覽或者只看本身不太明白的地方,還有這個分塊介紹的,還有幾篇blog,這個和這個講的是卷積神經網絡。圖像識別用的比較多的就是卷積神經網絡,這兩篇能夠看看。
6.Tensorflow:前面都是鋪墊,是爲了更好地使用Tensorflow。官方的文檔不錯,能夠從get started而後tutorial看起,有個中文的翻譯版,可是更新不及時(官方已經v1.0,這個多是v0.8或者v0.7),可能有坑,能夠和英文對照着看,還有個Tensorflow的教程,也不錯。有篇FIRST CONTACT WITH TENSORFLOW也不錯。
7.優秀博客:Hackery, Math & Design, Mike Bostock, http://colah.github.io/, Café, bonne nuit這幾個都是我在學習中遇到的很是nice的blog,有時間讀讀定會有所收穫。
8.經典論文及書籍:收集了一些DL的經典論文&書籍,有些雜亂,不過幾乎都是經典,各取所需吧。百度雲地址:(已刪除,內容上有些陳舊了,而且百度雲老是封殺連接)。各位有更好的歡迎推薦,我會整理上傳。
9.幾篇原創TF相關文章(持續更新):如何理解TensorFlow中的batch和minibatch,結合TensorFlow PlayGround的簡單神經網絡原理解釋,TensorFlow從源碼安裝,利用TF重訓練Google Inception模型,在Android端使用TensorFlow
其中,Python,DL,Tensorflow是重點,其餘都是輔助, 本身感受夠用便可,無需深刻。學習中遇到困難首先向搜索引擎詢問。
2017.9.23 更新:更新部分連接以及資源描述
2017.7.31 更新:添加了一些推薦資源,序號從新排版,在首部重點推薦了幾個教程,方便快速上手
2017.7.30 更新:修正一些排版問題,刪除百度雲連接,增長CS 20SI課程
2017.5.16 更新:更新失效的百度雲地址
2017.4.3 更新:修正筆誤,同時加了前言
2017.3.30 更新:修正一些筆誤
2017.3.28 更新:完成了近期更新計劃,從新整理了全部內容,同時及時跟進了新的內容
2017.2.17 更新:更新了在移動端使用TF的項目筆記,添加了近期更新計劃
2016.11.25 更新:更新預告
2016.10.15 更新:更新了說起的軟件版本號,添加了第九部分原創TF相關博文
2016.8.8 更新:更新了說起的軟件版本號
2016.7.27 更新:從新排版,上傳了資料
2016.7.6 更新:從新排版
出處:https://www.zhihu.com/question/41667903