延伸閱讀: Keras文檔 Keras文檔的來源位於此目錄中。我們的文檔使用由MkDocs 實現的擴展Markdown 。 構建文檔 安裝MkDocs: pip install mkdocs pip install -e . 確保Python將導入您修改後的Keras版本。 從根目錄cd進入docs/文件夾並運行: KERAS_BACKEND=tensorflow python autogen.py mkdocs serve #啟動本地Web服務器: localhost:8000 mkdocs build #在site/目錄中構建靜態站點 Keras: 中文文檔 延伸閱讀 Keras: The Python Deep Learning library
Predicting Boston House Prices
其餘公開數據集介紹 Imagenet
Imagenet數據集有1400多萬幅圖片,涵蓋2萬多個類別;其中有超過百萬的圖片有明確的類別標註和圖像中物體位置的標註,具體信息如下:
1)Total number of non-empty synsets : 21841
2)Total number of images: 14,197,122
3)Number of images with bounding box annotations: 1,034,908
4)Number of synsets with SIFT features: 1000
5)Number of images with SIFT features: 1.2 million
Imagenet數據集是目前深度學習圖像領域應用得非常多的一個領域,關於圖像分類、定位、檢測等研究工作大多基於此數據集展開。Imagenet數據集文檔詳細,有專門的團隊維護,使用非常方便,在計算機視覺領域研究論文中應用非常廣,幾乎成為了目前深度學習圖像領域算法性能檢驗的“標準”數據集。數據集大小:~1TB(ILSVRC2016比賽全部數據) 下載地址: http://www.image-net.org/about-stats
COCO
COCO(Common Objects in Context)是一個新的圖像識別、分割和圖像語義數據集,它有如下特點:
1)Object segmentation
2)Recognition in Context
3)Multiple objects per image
4)More than 300,000 images
5)More than 2 Million instances
6)80 object categories
7)5 captions per image
8)Keypoints on 100,000 people
COCO數據集由微軟贊助,其對於圖像的標註信息不僅有類別、位置信息,還有對圖像的語義文本描述,COCO數據集的開源使得近兩三年來圖像分割語義理解取得了巨大的進展,也幾乎成為了圖像語義理解算法性能評價的“標準”數據集。
延伸閱讀 Getting started with the Keras Sequential model
模型編譯 在訓練模型之前,您需要配置學習過程,的英文這通過 compile 方法完成的它接收三個參數:
•優化器optimizer。它可以是現有優化器的字符串標識符,如 rmsprop 或 adagrad ,也可以是Optimizer類的實例。
•損失函數的損失,模型試圖最小化的目標函數它可以是現有損失函數的字符串標識符,如。 categorical_crossentropy 或 mse ,也可以是一個目標函數
•評估標準指標。對於任何分類問題,你都希望將其設置為 metrics = ['accuracy'] 。評估標準可以是現有的標準的字符串標識符,也可以是自定義的評估標準函數。
Getting started with the Keras functional API
層「節點」的概念
每當你在某個輸入上調用一個層時,都將創建一個新的張量(層的輸出),並且為該層添加一個「節點」,將輸入張量連接到輸出張量。當多次調用同一個圖層時,該圖層將擁有多個節點索引(0, 1, 2...)。
但是如果一個層與多個輸入連接呢?
只要一個層僅僅連接到一個輸入,就不會有困惑, .output 會返回層的唯一輸出
機器學習 - 神經網路 (多層感知機 Multilayer perceptron, MLP) 運作方式
多層感知機
TensorFlow筆記-06-神經網絡優化-損失函數,自定義損失函數,交叉熵
使用損失函數
在經典的人工神經網路解釋中,隱藏層中的所有神經元最初都是被啟動的,為了完成某一特定任務,有必要關閉其中的一些神經元,即有必要「遺忘」所有不必要信息。在人工神經網路中,啟動是指神經元在評估中參與正向傳播,在訓練中參與反向傳播。
知乎 - Tensorflow中learning rate decay的技巧 機器/深度學習-基礎數學(二):梯度下降法(gradient descent)
延伸閱讀– 如何設定學習率的衰減 decayed_learning_rate = learning_rate * decay_rate ^ (global_step / decay_steps)
natural_exp_decay :自然指數衰減 decayed_learning_rate = learning_rate * exp(-decay_rate * global_step)
inverse_time_decay :逆時間衰減 decayed_learning_rate = learning_rate / (1 + decay_rate * global_step / decay_step)
global_step = min(global_step, decay_steps) decayed_learning_rate = (learning_rate -
end_learning_rate) *(1 - global_step / decay_steps) ^ (power) + end_learning_rate
gradient descent using python and numpy
推薦閱讀 Backpropagation wiki連結連結 深度學習(Deep Learning)-反向傳播 連結 BP神經網路的原理及Python實現
延伸閱讀 An overview of gradient descent optimization algorithms
在很多機器學習和深度學習的應用中,我們發現用的最多的優化器是Adam,為什麼呢?
延伸閱讀:優化器是編譯Keras模型所需的兩個參數之一 from keras import optimizers
model = Sequential() model.add(Dense(64, kernel_initializer= 'uniform' , input_shape=(10,)))
model.add(Activation( 'softmax’ ))
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov= True )
model.compile(loss= 'mean_squared_error' , optimizer=sgd)
您可以在傳遞優化器之前將其實例化 model.compile() ,如上例所示,或者您可以通過其名稱來調用它。
在後一種情況下,將使用優化程序的默認參數。
# pass optimizer by name: default parameters will be used
model.compile(loss= 'mean_squared_error' , optimizer= 'sgd' )
所有Keras優化器通用的參數
的參數 clipnorm 和 clipvalue 可以與所有優化可以用來控制限幅梯度
延伸閱讀:二階優化算法 二階優化算法使用了二階導數(也叫做 Hessian方法 )來最小化或最大化損失函數。由於二階導數的計算成本很高,所以這種方法並沒有廣泛使用。
延伸閱讀:自適應的算法 如果需要更快的收斂,或者是訓練更深更複雜的神經網絡,需要用一種自適應的算法。
EliteDataScience - 如何減少 Overfitting 的發生
使用 K-fold cross validation 找到一組參數可以在多組不同的 validation 上得到相似的結果 使用更多的訓練資料 減少 Features (參數) 的使用量 避免參數比潛在組合更多的狀況發生,以免模型靠硬記就可以得到結果 在模型訓練的過程中加入正則化參數 (Regularization) 參考資料連結:
如何 Debugging 1/2
檢查程式碼 確認參數設定 欲實作的模型是否合適當前的資料 確認資料結構 資料是否足夠 是否乾淨 是否有適當的前處理 如何 Debugging 2/2 以簡單的方式實現想法 建立評估機制 開始循環測試 (evaluate - tuning - debugging)
參考連結:
知乎 - 深度學習超參數 Learning rate 與 Momentum 理解
Learning rate:每次修正的幅度,太大則無法收斂,太小則修正過慢 Weight decay:增加正則用以避免 overfitting Momentum:在修正方向上,增加動量,如牛頓定律一樣,增加動量有機會讓卡在局部最小值的狀態跳離 Learning rate decay:讓Learning rate 可以隨訓練進行慢慢減小,讓收斂狀態趨於穩
參考連結:
Estimating an Optimal Learning Rate For a Deep Neural Network cs231n: learning and evaluation 知乎-深度學習超參數簡單理解>>>>>>learning rate,weight decay 和 momentum
CSDN - 常見優化器方法總結:
SGD (mini-batch)在單步更新與全局更新的折衷辦法,通常搭配 momentum 穩定收斂方向與結果。 收斂速度較慢。 RMSprop學習率的調整是根據過去梯度的狀況調整,收斂速度快又不易會出現 learning rate 快速下降的狀況。 Adam同樣是可以根據過去的梯度自行調整 learning rate,但校正方式考量一、二階矩陣,使其更加平穩。
在實作過程中,建議先使用 Adam 驗證,若要做最終的優化,則再改用 SGD 找到最佳參數。
參考連結:
Towards Data Science - Regularization in Machine Learning 在前面機器學習的課程中,已經提過 L1 與 L2 的原理與效果。 在深度學習模型中,Regularization 的參數是加在每一個 layer 中,最後在計算 loss 時,才會全部加起來併入 loss term。然而,實務經驗上,目前已經有很多更好避免參數權重過大導致神經網路不穩的方法如BatchNorm,在後面的課程中會陸續提到。
留言
張貼留言