回覆列表
-
1 # 你看我獨角獸嗎
-
2 # 薛定諤的小貓貓
我覺得要達到熟悉Tensorflow的地步,需要經歷三個階段。
一. 熟悉基礎語法可以去tensorflow中文社群,從新手入門到進階指南都有比較豐富的文章供參考。首先需要熟悉tensorflow中常見的變數和常量,資料讀取資料的機制,模型載入和儲存的方法,瞭解tensorflow的執行緒和佇列,不同OP操作方法的使用,以及共享變數的處理等等。在學習過程中可以從實現一個最簡單的線性迴歸或邏輯迴歸開始,練練手。
二. 實現demo訓練在熟悉基本語法後,可以做一些demo練練手,比如實現一個簡單的翻譯模型,手寫識別模型等,儘量多做幾個不同方面的demo,以便多熟悉一些API,並加強動手能力。
三. 參與大型專案真正將tensorflow應用到大專案中,面對大資料,可能需要針對性做一些底層最佳化,或模型的並行方式實現等。
經歷上述三個階段,基本上就可以在簡歷上寫熟悉tensorflow了,面試官問你相關問題基本上應該也能答上來。
嗯。。。這種問題,如果有應用過TensorFlow做大規模分散式機器學習系統的話,那麼已經可以算作熟悉TensorFlow了。當然如果要檢驗是否熟悉Tensorflow,那麼可以用下面這些標準大概確認下自己的熟悉程度,當然同時也可以用來查缺補漏。
Tensorflow基礎知識點計算圖
在Tensorflow中,經常提及到計算圖的概念,那什麼是計算圖呢?它實質上是一個全域性資料結構:計算圖是一個有向圖,捕獲有關計算方法的指令。我們來看看簡單的計算圖形成,透過以下程式碼,我們可以生成2+3的步驟,但是隻包含計算步驟,不包含結果,至少目前還沒實現。
會話
會話的概念就是將計算圖生成的步驟逐一執行,處理記憶體分配和最佳化,使我們能夠實際執行由圖形指定的計算。例如以下程式碼:
佔位符和 feed_dict
佔位符是一種用於接受外部輸入的節點,而feed_dict 屬性是為了給佔位符提供實質的數值。
變數共享
你可能會碰到帶有變數共享的 Tensorflow 程式碼,程式碼有它們的作用域,並設定“reuse=True”。我強烈建議你不要在程式碼中使用變數共享。如果你想在多個地方使用單個變數,只需要使用指向該變數節點的指標,並在需要時使用它。換句話說,對於打算儲存在記憶體中的每個引數,應該只調用一次 tf.get_variable()。
最佳化器
在深度學習中,典型的“內迴圈”訓練如下:
獲取輸入和 true_output;
根據輸入和引數計算出一個“猜測”;
根據猜測和 true_output 之間的差異計算出一個“損失”;
根據損失的梯度更新引數。
最佳化器的作用在於對於找到的每個變數節點,它計算與損失相關的變數梯度。然後,它為該變數計算新值:當前值減去梯度乘以學習率。最後,它執行一個賦值操作來更新變數的值。
用 tf.Print 進行除錯
一般來說,檢查計算圖中發生了什麼是很困難的。你不能使用常規的 Python 列印語句,因為你永遠無法訪問到要列印的值,這時候就需要用tf.Print。
常用模型的Tensorflow實現對於這一塊內容,最好自己用程式語言實現過一遍,考驗深度學習基礎功底。
卷積網路(Convolutional Network)
迴圈神經網路(LSTM)(Recurrent Neural Network (LSTM))
受限玻爾茲曼機(Restricted Boltzmann Machine)
深度信念網路(Deep Belief Network)
作為RBM堆疊的深度自編碼器(Deep Autoencoder as stack of RBMs)
去噪自編碼器(Denoising Autoencoder)
堆疊的去噪自編碼器(Stacked Denoising Autoencoder)
作為去噪自編碼器堆疊的深度自編碼器(Deep Autoencoder as stack of Denoising Autoencoders)
多層感知器(MultiLayer Perceptron)
Logistic 迴歸
TensorFlow的交叉熵函式交叉熵(Cross Entropy)是Loss函式的一種(也稱為損失函式或代價函式),用於描述模型預測值與真實值的差距大小,常見的Loss函式就是均方平方差(Mean Squared Error)。
交叉熵具體定義如下:
TensorFlow針對分類問題,實現了四個交叉熵函式,分別是tf.nn.sigmoid_cross_entropy_with_logits
tf.nn.softmax_cross_entropy_with_logits
tf.nn.sparse_softmax_cross_entropy_with_logits
tf.nn.weighted_cross_entropy_with_logits