2017-04-06 77 views
1

Keras中有激活層。keras使用激活層而不是激活參數

看來這代碼:

model.add(Convolution2D(64, 3, 3)) 
    model.add(Activation('relu')) 

和這一個:

model.add(Convolution2D(64, 3, 3, activation='relu')) 

產生相同的結果。

這個額外的目的是什麼激活層?

[Upgr:2017-04-10]與上述兩種情況有什麼不同?

回答

2

正如您所看到的,兩種方法都是相同的。我會告訴你一些場景中,有這層可能會有所幫助:

  1. 同一層 - 不同的激活 - 一個可以很容易想象,你想擁有適用於相同的輸出不同的激活淨。沒有Activation這是不可能的。
  2. 在激活之前需要輸出 - 例如,在連體網絡你正在訓練你的網絡使用softmax作爲最後的激活 - 但最終 - 你想要所謂的logits - 反轉softmax函數。沒有額外的Activation層可能會很困難。
  3. 顯着圖中的顯着圖: - 類似於前一點中的內容 - 在激活之前還需要輸出以計算漸變w.r.t.到它 - 沒有Activation這是不可能的。

正如您所看到的 - 缺少Activation會在激活和最終激活強耦合之前使輸出層。這就是爲什麼Activation可能非常有用 - 因爲它打破了這種關係。