1.可擴展參數: 從 kwargs 字典裏獲取,可限制key的取值
vars : name scope 下的變量(字典)
placeholders : 外部變量占位,壹般是特征和標簽(字典)
layers : 神經網絡的 layer (列表)
activations : 每個 layer 的輸出結果(列表)
inputs : 輸入
output : 輸出
loss : 損失
accuracy : 準確率
optimizer :優化器
opt_op :最優化的 op 操作
_build 是私有 build 方法,在繼承Model的具體實現時對 layers 進行 append 操作,下面介紹 build 方法:
調用 _build ,所有變量設置***享空間( self.name )
構建模型序列:給輸入,通過layer()返回輸出,又將這個輸出再次作為輸入到下壹個 layer() 中,循環這壹過程;最終,取最後壹層 layer 的結果作為 output
保存 name scope下 的變量到 self.vars
模型效果度量: _loss 方法, _accuracy 方法
常用的結構化數據文件格式有csv、txt 、libsvm,本篇文章主要說明結構化數據(csv/txt)如何在TF框架進行高效、靈活的讀取,避免壹些不合理的方式,邁出算法開發標準化、工程化的第壹步。
最常見的讀取數據的方式是利用pandas包將csv、txt讀取為DataFrame,壹次全部放入內存。這是壹種非常低效的方式,應該盡量避免這種讀取方法。其他第三方封裝python讀取方式的包(TFLearn等)也不建議使用,推薦使用TF框架的OP操作進行數據讀取。
高效的 TensorFlow 讀取方式是將數據讀取轉換成 OP,通過 session run 的方式拉去數據。讀取線程源源不斷地將文件系統中的文件讀入到壹個內存的隊列中,而負責計算的是另壹個線程,計算需要數據時,直接從內存隊列中取就可以了,這樣就可以解決GPU因為IO而空閑的問題。同時,不會壹次性的preload到內存,再大的數據量也不會超出內存的限制。
梯度下降 :梯度下降是壹個在機器學習中用於尋找較佳結果(曲線的最小值)的叠代優化算法。梯度的含義是斜率或者斜坡的傾斜度。下降的含義是代價函數的下降。
?算法是叠代的,意思是需要多次使用算法獲取結果,以得到最優化結果。梯度下降的叠代性質能使欠擬合演變成獲得對數據的較佳擬合。
?梯度下降中有壹個稱為學習率的參量。如上圖左所示,剛開始學習率較大,因此下降步長更大。隨著點的下降,學習率變得越來越小,從而下降步長也變小。同時,代價函數也在減小,或者說代價在減小,有時候也稱為損失函數或者損失,兩者是壹樣的。(損失/代價的減小是壹個概念)。
?只有在數據很龐大的時候(在機器學習中,數據壹般情況下都會很大),我們才需要使用epochs,batch size,iteration這些術語,在這種情況下,壹次性將數據輸入計算機是不可能的。因此,為了解決這個問題,我們需要把數據分成小塊,壹塊壹塊的傳遞給計算機,在每壹步的末端更新神經網絡的權重,擬合給定的數據。
(1)batchsize:批大小。在深度學習中,壹般采用SGD訓練,即每次訓練在訓練集中取batchsize個樣本訓練;
(2)iteration:1個iteration等於使用batchsize個樣本訓練壹次;
(3)epoch:1個epoch等於使用訓練集中的全部樣本訓練壹次;