前言
幾個月前安裝過一次tensorflow,可是早就忘了,今天又是回到起點從新安裝。緣由很簡單:每一次接觸都沒有很明確的目的,也沒有特別的理由去堅持熟悉它,因此最後就是浪費了時間。python
因此我打算先大體瞭解一下官網結構,記下個人第一想法和疑問,有助於我從宏觀上了解須要掌握的東西。但願這個作法有助於我堅持去學習,最終把它變成我掌握的技能之一。linux
如下全都是我本身理解和想象的,主要目的是幫助我創建tensorflow的學習框架圖。程序員
Tensorflow官網菜單概覽
- Install:告訴咱們如何安裝
- Develop:安裝好之後就要開始開發了
- API r1.4:詳細的API描述
- Deploy:開發好之後如何部署
- Extend:進階到高級開發者,能夠本身去擴展一些東西
- Community:社區,問題討論,style guide居然也在這。
- Github連接。
目前的目標:完成第二階段Develop應該就能夠了吧?!算法
Install
今天剛剛安裝好linux版本,也寫了文章作筆記。小程序
要點歸納:網絡
- 有兩種版本:基礎的CPU版本,高速的GPU版本。
- 主要使用python開發,但也能夠單獨配置其餘語言的環境。
以後可能會在mac上再裝一次。session
Develop
重頭戲在這裏,若是我想使用tensorflow,須要掌握的知識所有在這裏,因此須要好好分解一下。框架
Get Started
針對全部人的入門指南,包括啥都不懂的新手以及程序員。機器學習
Getting Started With Tensorflow
介紹了一些基本概念,包括什麼是tensor,graph,跑了一個樣例代碼訓練data。
有點算是用一個簡單的例子把tensorflow訓練一個模型的流程跑一遍。繼hello world以後的一個最基礎的小程序,可是沒有應用場景。
誤會:覺得estimator是評估模型好很差,其實estimator是tf一個high level的API,讓你不用去處理底層的實現細節。分佈式
MNIST
一個直觀的使用實例:識別數字。這是個蠻成熟的use case。
包含了兩個部分,一個是簡單版的MNIST,幫助你瞭解ML,一個是用Deep深度學習作的MNIST。(這個deep好像不是深度學習的意思)
最後一個部分是藉助於MNIST從low-level去介紹tensorflow的API。
以上理解好像不是太正確。
第一個是用high-level的API實現的MNIST,第二個是介紹了更多的ML概念,第二個是low-level API。
總的來講,全都是用的tensorflow來實現這個例子,分階段幫助新手入門的感受。學習的時候能夠去總結和比較看看這三個教程的關係。
tf.estimator
乍一看我還覺得是模型評估,上面我也是這麼寫的。如今看來不是。
這是新手用high-level API時會經常使用到的方法,分了兩個頁面來介紹這個方法。我猜一個是介紹概念,一個是根據例子來介紹如何使用。
TensorBoard
這是用於可視化調試的,可是歷來沒有用過。目前的理解就是tensorflow的程序分了兩個階段:構建階段和執行階段。執行階段也就是那句run(),在這句以前是根本看不到任何變量的值的。由於這種狀況以及分佈式的運行過程,因此提供了這個board幫助調試。
Programmer's Guide
上一章節入門之後,外行的新手們就能夠開心離開了,可是程序員就該進入這個章節了。介紹了許多概念。其實Getting Started裏介紹了一些概念,但這一章應該是介紹得更加細緻。
(改用list來筆記)
- Estimators:如我上面所理解的,是一個high-level的API封裝,多是給非程序員用的。
- Tensors:如何建立/操做/使用張量。(張量/operator/graph是什麼關係??)
- Variables:如何表示共享的,經常使用的狀態。(不是太理解,意思是tensors都是一次性的嗎?tensor跟變量是兩回事?變量是用來存儲和表示state/狀態的?)
- Graphs and Sessions:(graph的結構讓tf能夠更好的利用分佈式並行計算,而要想採用這個結構,session是必不可少的。爲了肯定邊界?還有區分構建階段和執行階段。)
- 一個graph表示一個計算任務,一個計算任務包含:0或多個輸入,一個操做operation,0或多個輸出。計算任務構成了基本的tf結點?helloworld的例子連圖都沒有,因此根本不算跑了。錯,無論什麼代碼都有一個default graph啊忘了嗎?
- Estimators和Keras都是high-level的API,它都幫你把graph和session處理好了。(keras的做者被google買進來了,由於作得好,因此要整合到tf裏。)
- Saving and Restoring:如何保存variables和models。(果真variables不是其餘語言裏的那種變量,是保存一個狀態。state)
- Input Pipelines:如何set up data pipelines讓你把數據讀入到tf程序裏(由於ml的數據量都會很大,內存可能不夠用,因此input data是須要單獨解決的一個問題)
- Embeddings:向量(提及來它跟tensor之間是什麼關係呢?!對了,好像不少人都不翻譯的,就是直接用英文表示)。介紹embeddings的概念,還告訴咱們怎麼在TensorBoard裏查看embeddings。
- Debugging:怎麼對tensorflow程序進行debug(tfdbg)。提及來,任何程序的debug我都不太會。
- TensorFlow Version Compatibility:畢竟也是一個active的項目,版本變化比較多,介紹版本之間的兼容性。
- FAQ:常見問題。
Tutorials
顧名思義,手把手的教你用。前面都是帶你入門,給你打基礎的。
- Using GPUs:最開始提到tf有兩種版本,這一章介紹一下兩種的區別,tf分別是怎麼跟GPU和CPU怎麼交互的。(目前能夠先略過)
(理論上應該繼續用list羅列,不過接下來好像分主題會比較清晰)
tensorflow是一個deep learning的框架,可是深度學習也不是說什麼領域均可以,也是有它擅長和成熟的領域。
目前來講主要集中在:圖像相關,語音相關,還有一些很成熟的算法模型(可能有不少的應用場景,好比廣告分類,垃圾郵件處理等等等等)
我想圖像和語音屬於效果比較好展現和好理解的領域吧,因此就成了一個很熱門的分支。
Image Recognition
- 介紹了Image Recognition這個領域,同時介紹了一個model來作圖像識別(inception,google出的一個圖像識別的model)。
提及來,model又指算法,又指model file,確實很容易迷失。不過想一想也是,這確實是一個模糊的概念。
inception是google的算法,其實facebook也有本身的算法模型。還有一些開源組織,研究機構都推出了本身的。
這就是了解這個領域的必要性。否則可能很容易迷失。
- 深度學習是基於神經網絡的,因此會有不少層layer。這裏介紹一下怎麼從新retrain一下inception模型的最後一層,讓它能夠識別new categories。
因此是能夠單獨只訓練一層模型的,是否是就是這裏須要用到variables保存state?!!
- 介紹TF layers。用卷積神經網絡(Convolutional Neural Networks, CNNs)來介紹TF layer的概念。而後用TF來建一個CNN(模型?)
- CNN。(CNN自己是一個概念,也是一個算法,也是一個模型?!?跟inception什麼關係,inception是CNN仍是RNN仍是其餘的什麼NN,仍是它根本不是NN????)建一個small CNN用來作圖像識別。這一章是給高級TF用戶的。我以爲我起碼也要到達這一層次吧?!
Human Language
- Word Embeddings:怎麼把words變成embeddings(也就是words的vector表達)
- RNN(Recurrent Neural Networks),用RNN來預測一個句子裏的下一個單詞word。
- Sequence-to-Sequence Model, 這是序列模型的意思嗎?anyway,這一部分介紹怎樣利用這個models把英文翻譯成法文!
看標題都以爲天然語言的處理都是在解決很直觀的問題。其實裏面不少坑的吧!!不過這部分也是我要掌握的。
Focus on Linear Models
光是線性模型其實就已經很強大,能夠作到很是多的事情了。讓咱們看看接下來的例子。
- 介紹TF裏的大規模線性模型:如何用TF high-level API來建造他們。
大規模large-scale指的是啥啊,數據量嗎?仍是說不少不一樣的線性模型?多是說維度巨大。
- 用一個二元分類的問題來看看TF怎麼用線性模型解決這個問題。
- 來看看在TF裏如何聯合使用線性模型和深度學習模型解決問題。固然是用high-level API。至此我得出一個結論:並非說程序員就要用low-level API,那只是裝逼,瞭解low的是爲了更深入理解high的,固然最後能用high就用high,減小出錯機率。
- 告訴咱們怎麼指明線性模型的kernel,來提升線性模型的質量。(因此又來一個kernel/算法/模型,這三個詞我有點懵)
- 來建一個簡單的語音識別的network(把聲音變成文本)(因此network指的是神經網絡?那神經網絡跟線性模型什麼關係?)
Other Problems besides ML
雖然TF專長於ML,不過也是能夠用它解決一些非機器學習的數學問題。
- Mandelbrot Set
- Partial Differential Equations
不翻譯了,暫時不會看這個。
(先不要)
Mobile
(目錄暫略,由於我以爲我心中已經有數了)
主要是如何在移動設備上使用,彷佛沒提到訓練和使用model的具體問題。可是看完第二章,這裏可能就沒疑問了吧。