Keras中密集层和激活层之间的区别

时间:2016-11-29 12:37:33

标签: python machine-learning neural-network deep-learning keras

我想知道Keras中激活层和密集层之间有什么区别。

由于激活层似乎是一个完全连接的层,而Dense有一个参数来传递激活函数,最佳做法是什么?

让我们想象一个像这样的虚构网络: 输入 - >密集 - >辍学 - >最后一层 最终层应该是:密集(激活= softmax)或激活(softmax)? 什么是最干净的,为什么?

谢谢大家!

2 个答案:

答案 0 :(得分:24)

使用Dense(activation=softmax)计算等效于首先添加Dense,然后添加Activation(softmax)。但是,第二种方法有一个优点 - 您可以从这样定义的模型中检索最后一层(激活之前)的输出。在第一种方法中 - 这是不可能的。

答案 1 :(得分:0)

正如@MarcinMożejko所说,它是等效的。我只想解释为什么。如果您查看Dense Keras documentation page,将会看到默认激活功能为None

一个致密层在数学上是:

a = g(W.T*a_prev+b)

其中g是激活功能。使用Dense(units=k, activation=softmax)时,它一次计算所有数量。在执行Dense(units=k)然后执行Activation('softmax)时,它首先计算数量W.T*a_prev+b(因为默认的激活函数是None),然后将指定为输入的激活函数应用于Activation层到计算出的数量。