TensorFlow學習線路

如何高效的學習 TensorFlow 代碼? 或者如何掌握TensorFlow,應用到任何領域?php

 

做者:黃璞
連接:https://www.zhihu.com/question/41667903/answer/109611087
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

有同窗反應資源太多不知道從何看起,或者有點基礎了想快速上手,所以就直接把幾個比較好的教程放在這裏,後面的內容做爲參考。html

  1. Stanford的CS 20SI課程,專門針對TensorFlow的課程,Tensorflow for Deep Learning Research
  2. 兩本書籍:TensorFlow Machine Learning Cookbook以及TensorFlow for Machine Intelligence,這兩本網絡均有pdf版本,請自行搜索。
  3. Udacity公開課,深度學習

 

有些技術(網絡方面)在知乎是不適合公開討論的,所以仍是要貼上本身這篇博客的連接:新手向的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

3. Git – Quick Guide

【hard way(即大而全的完整或者正式教程,下同)】:

1. Pro Git與Git的參考文檔

2. Git – Tutorial

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

2. Python Quick Guide

3. Google’s Python Class

【hard way】

1. 廖雪峯的Python教程

2. The Python Tutorial

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

2. Linux Tutorial

3. Linux工具快速教程

5. 深度學習–概念與基礎:

【fast peace】(偏向概念介紹,introduction):

1. 深度學習wiki

【hard way】(偏向概念解釋,數學推導,基本原理):
兩本經典中的經典書籍:第一本傾向於理論闡述,第二本則是傾向於直觀解釋。

1. Deep Learning

2. Neural Networks and Deep Learning

第三本則是代碼應用向的,使用Theano從零搭建各類常見的網絡結構,雖然是Theano,可是基本思想是統一的。

3. Deep Learning Tutorials

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等):

  1. 官網教程,Get Start,Programmer’s guide,Tutorials,Performance過一遍。
  2. Google的Udacity課程
  3. Stanford的CS20SI課程

8. 論文閱讀路線圖【hard way】: github上有個頗有名的Deep Learning papers reading roadmap,已通過萬stars,從事深度學習科研者的必讀清單,在我寫的上一篇學習之路中,雖然整理了不少論文,可是過於雜亂,在此就不作引用啦。

9. 相關博客等其餘資源:

  1. 先放上個人博客啦(笑)
  2. Beginner-level tutorials for a powerful framework
  3. CS231n: Convolutional Neural Networks for Visual Recognition
  4. CS224n: Natural Language Processing with Deep Learning
  5. UFLDL Tutorial
  6. UFLDL教程(上面UFLDL Tutorial舊版,可是是中文的)
  7. First Contact With TensorFlow
  8. Deep Learning
  9. Deep Learning For Coders-36 hours of lessons for free(一個不錯的視頻教程)
  10. colah’s blog(推薦,寫了不少晦澀概念可視化的博客)
  11. DeepLearning4J(雖然是一個面向Java的深度學習框架,可是文檔很好,通用性也很強)
  12. Chris McCormick · Machine Learning Tutorials and Insights(這個和下面的幾個都是不錯的博客,推薦關注)
  13. Daniil's blog
  14. Café, bonne nuit
  15. Hackery, Math & Design

10. 不錯的資源類網站:

  1. arxiv-sanity
  2. GitXiv

---------------------------------舊答案的分割線---------------------------------

已更新。
發一波預告~最近剛用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 WayPython2.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 & DesignMike BostockCafé, 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

相關文章
相關標籤/搜索