我想知道Keras中激活层和密集层之间有什么区别。
由于激活层似乎是一个完全连接的层,而Dense有一个参数来传递激活函数,最佳做法是什么?
让我们想象一个像这样的虚构网络: 输入 - >密集 - >辍学 - >最后一层 最终层应该是:密集(激活= softmax)或激活(softmax)? 什么是最干净的,为什么?
谢谢大家!
答案 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
层到计算出的数量。