1. 程式人生 > >fast.ai 深度學習筆記:第一部分第四課

fast.ai 深度學習筆記:第一部分第四課

原文:Deep Learning 2: Part 1 Lesson 4

作者:Hiromi Suenaga

學生的文章:

 

  image.png

 

Dropout [04:59]

learn = ConvLearner.pretrained(arch, data, ps=0.5, precompute=True) 

  • precompute=True :預計算來自最後一個卷積層的啟用。 請記住,啟用是一個數字,它是根據構成核心/過濾器的一些權重/引數計算出來的,它們會應用於上一層的啟用或輸入。
learn 

Sequential(
  (0): BatchNorm1d(1024, eps=1e-05, momentum=0.1, affine=True) (1): Dropout(p=0.5) (2): Linear(in_features=1024, out_features=512) (3): ReLU() (4): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True) (5): Dropout(p=0.5) (6): Linear(in_features=512, out_features=120) (7): LogSoftmax() ) 

learn - 這將顯示我們最後新增的層。 這些是我們在precompute=True時訓練的層

(0),(4): BatchNorm將在上一課中介紹

(1),(5):Dropout

(2): Linear層僅僅是矩陣乘法。 這是一個包含 1024 行和 512 列的矩陣,因此它將接受 1024 個啟用並輸出 512 個啟用。

(3): ReLU - 只是用零替換負數

(6): Linear - 第二個線性層,從前一個線性層獲取 512 個啟用並將它們乘以 512 乘 120 的新矩陣並輸出 120 個啟用

(7): Softmax

 - 啟用函式,返回最大為 1 的數字,每個數字在 0 和 1 之間:

 

  image.png

 

出於較小的數值精度原因,事實證明最好直接使用 softmax 的 log 而不是 softmax [15:03]。這就是為什麼當我們從模型中得到預測時,我們必須執行np.exp(log_preds)

閱讀更多