2022年4月2日 星期六

機器學習筆記 : 深度學習的 16 堂課 (七)

  1. 一個神經網路通常包括輸入層, 中間層 (隱藏層), 以及輸出層三大部分. 輸入層的神經元數量必須與輸入資料對應, 例如 MNIST 的每張圖片為 784 個像素構成, 則輸入層必須配置 784 個神經元. 隱藏層有很多種設計方式, 最常見的隱藏層是密集層 (dense layer), 它是將前一層與後一層神經元完全連接, 故又稱全連接層 (fully connected layer). 密集層沒有專門特定的應用, 但搭配非線性激活函數可重組前一層傳來的資訊, 用途很廣. 隱藏層都是密集層的神經網路稱為密集神經網路 (dense neural network, DNN). 輸出層要視應用問題選用適當的激活函數, 例如二元分類會使用 sigmoid; 多元分類會使用 softmax.
  2. 激活函數 softmax 顧名思義, 它是以柔性的方式 (即指數的平滑性) 求出最大的機率落在何處, 用 Numpy 計算 softmax :

    >>> import numpy as np    
    >>> def softmax(x):                              # 訂義 softmax 函數
        return np.exp(x)/sum(np.exp(x))     
    >>> x=np.array([-1.0, 1.0, 5.0])           # 將向量轉成 ndarray 
    >>> softmax(x)                                      # 計算 softmax 激活值
    array([0.00242826, 0.01794253, 0.97962921])   
    >>> np.argmax(softmax(x))                 # 傳回最大值索引
    2

    可見 softmax() 會將加權總和轉成 0~1 的機率, 而 argmax() 則可以傳回機率最大之索引.  

沒有留言 :