Keras 中密集层和激活层的区别
Difference between Dense and Activation layer in Keras
我想知道 Keras 中的激活层和密集层有什么区别。
由于激活层似乎是一个全连接层,而密集层有一个参数来传递一个激活函数,最佳做法是什么?
让我们想象一个像这样的虚构网络:
输入 -> 密集 -> 丢弃 -> 最后一层
最后一层应该是:Dense(activation=softmax) 还是 Activation(softmax)?
什么最干净,为什么?
谢谢大家!
使用 Dense(activation=softmax)
在计算上等同于先添加 Dense
然后添加 Activation(softmax)
。然而,第二种方法有一个优点——您可以从这种定义的模型中检索最后一层(激活前)的输出。在第一种方法中 - 这是不可能的。
正如@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
层到计算数量。
我想知道 Keras 中的激活层和密集层有什么区别。
由于激活层似乎是一个全连接层,而密集层有一个参数来传递一个激活函数,最佳做法是什么?
让我们想象一个像这样的虚构网络: 输入 -> 密集 -> 丢弃 -> 最后一层 最后一层应该是:Dense(activation=softmax) 还是 Activation(softmax)? 什么最干净,为什么?
谢谢大家!
使用 Dense(activation=softmax)
在计算上等同于先添加 Dense
然后添加 Activation(softmax)
。然而,第二种方法有一个优点——您可以从这种定义的模型中检索最后一层(激活前)的输出。在第一种方法中 - 这是不可能的。
正如@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
层到计算数量。