2017-04-06 117 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可能非常有用 - 因为它打破了这种关系。