延伸閱讀: 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

  • Keras dataset
         https://keras.io/datasets/

  • 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數據集的開源使得近兩三年來圖像分割語義理解取得了巨大的進展,也幾乎成為了圖像語義理解算法性能評價的“標準”數據集。
Google開源的開源了圖說生成模型show and tell就是在此數據集上測試的,想玩的可以下下來試試。數據集大小:~40GB 下載地址:http://mscoco.org/

延伸閱讀

Getting started with the Keras Sequential model

模型編譯

在訓練模型之前,您需要配置學習過程,的英文這通過compile方法完成的它接收三個參數:
優化器optimizer。它可以是現有優化器的字符串標識符,如rmspropadagrad,也可以是Optimizer類的實例。
損失函數的損失,模型試圖最小化的目標函數它可以是現有損失函數的字符串標識符,如。categorical_crossentropymse,也可以是一個目標函數
評估標準指標。對於任何分類問題,你都希望將其設置為metrics = ['accuracy']。評估標準可以是現有的標準的字符串標識符,也可以是自定義的評估標準函數。

Getting started with the Keras functional API


層「節點」的概念
每當你在某個輸入上調用一個層時,都將創建一個新的張量(層的輸出),並且為該層添加一個「節點」,將輸入張量連接到輸出張量。當多次調用同一個圖層時,該圖層將擁有多個節點索引(0, 1, 2...)。

但是如果一個層與多個輸入連接呢?
  • 只要一個層僅僅連接到一個輸入,就不會有困惑,.output會返回層的唯一輸出

機器學習 - 神經網路 (多層感知機 Multilayer perceptron, MLP) 運作方式

文章連結:Medium shorturl.at/oH234

多層感知機



TensorFlow筆記-06-神經網絡優化-​​損失函數,自定義損失函數,交叉熵


使用損失函數


在經典的人工神經網路解釋中,隱藏層中的所有神經元最初都是被啟動的,為了完成某一特定任務,有必要關閉其中的一些神經元,即有必要「遺忘」所有不必要信息。在人工神經網路中,啟動是指神經元在評估中參與正向傳播,在訓練中參與反向傳播。

  • 神經網路常用啟動函數總結

  • Reference 激活函數的圖示及其一階導數
        in-neural-networks/



  • 知乎 - Tensorflow中learning rate decay的技巧
  • 機器/深度學習-基礎數學(二):梯度下降法(gradient descent)
         shorturl.at/iCHW2

延伸閱讀– 如何設定學習率的衰減

  • exponential_decay :指數衰減
         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)
  • polynomial_decay :多項式衰減
         global_step = min(global_step, decay_steps) decayed_learning_rate = (learning_rate -  
         end_learning_rate) *(1 - global_step / decay_steps) ^ (power) + end_learning_rate


  • 機器學習-梯度下降法
         shorturl.at/cgS49

  • gradient descent using python and numpy

  • 梯度下降算法的參數更新公式

推薦閱讀


延伸閱讀

An overview of gradient descent optimization algorithms

在很多機器學習和深度學習的應用中,我們發現用的最多的優化器是Adam,為什麼呢?
下面是TensorFlow中的優化器,https://www.tensorflow.org/api_guides/python/train

在keras中也有SGD,RMSprop,Adagrad,Adadelta,Adam等:https://keras.io/optimizers/

我們可以發現除了常見的梯度下降,還有Adadelta,Adagrad,RMSProp 等幾種優化器,都是什麼呢,又該怎麼選擇呢?https://blog.csdn.net/qq_35860352/article/details/80772142

Sebastian Ruder的這篇論文中給出了常用優化器的比較 https://arxiv.org/pdf/1609.04747.pdf


延伸閱讀:優化器是編譯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優化器通用的參數
的參數clipnormclipvalue可以與所有優化可以用來控制限幅梯度

延伸閱讀:二階優化算法

二階優化算法使用了二階導數(也叫做Hessian方法 )來最小化或最大化損失函數。由於二階導數的計算成本很高,所以這種方法並沒有廣泛使用。

延伸閱讀:自適應的算法

如果需要更快的收斂,或者是訓練更深更複雜的神經網絡,需要用一種自適應的算法。


EliteDataScience - 如何減少 Overfitting 的發生


  • 使用 K-fold cross validation
    • 找到一組參數可以在多組不同的 validation 上得到相似的結果
  • 使用更多的訓練資料
  • 減少 Features (參數) 的使用量
    • 避免參數比潛在組合更多的狀況發生,以免模型靠硬記就可以得到結果
  • 在模型訓練的過程中加入正則化參數 (Regularization)
    • 控制 input 的改變對模型造成的影響太大。


參考資料連結:

如何 Debugging 1/2


  • 檢查程式碼
    • 養成好的程式撰寫習慣 (PEP8)
  • 確認參數設定
  • 欲實作的模型是否合適當前的資料
  • 確認資料結構
  • 資料是否足夠
  • 是否乾淨
  • 是否有適當的前處理


如何 Debugging 2/2

  • 以簡單的方式實現想法
  • 建立評估機制
  • 開始循環測試 (evaluate - tuning - debugging)



參考連結:


知乎 - 深度學習超參數 Learning rate 與 Momentum 理解


  • Learning rate:每次修正的幅度,太大則無法收斂,太小則修正過慢
  • Weight decay:增加正則用以避免 overfitting
  • Momentum:在修正方向上,增加動量,如牛頓定律一樣,增加動量有機會讓卡在局部最小值的狀態跳離
  • Learning rate decay:讓Learning rate 可以隨訓練進行慢慢減小,讓收斂狀態趨於穩

參考連結:
  1. Estimating an Optimal Learning Rate For a Deep Neural Network
  2. cs231n: learning and evaluation
  3. 知乎-深度學習超參數簡單理解>>>>>>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,在後面的課程中會陸續提到。















參考連結:


















arrow
arrow
    全站熱搜

    tttt 發表在 痞客邦 留言(0) 人氣()