fast.ai 深度學習筆記:第一部分第四課
阿新 • • 發佈:2018-11-11
學生的文章:
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
image.png
出於較小的數值精度原因,事實證明最好直接使用 softmax 的 log 而不是 softmax [15:03]。這就是為什麼當我們從模型中得到預測時,我們必須執行np.exp(log_preds)
。