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


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

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

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

感谢大家!


12739
2017-11-29 12:37


起源



答案:


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


12
2017-11-29 15:52



非常感谢,这很清楚! - Pusheen_the_dev
你能发现使用第一个的优点吗? - lejlot
模型定义更短,更紧凑。 - Marcin Możejko
所以在Keras,如果我必须在20个类上微调一个InceptionV3网络,我是否需要base_model.output,其中base_model是InceptionV3(),然后添加一个Dense(1024,激活+“relu”)(base_model.output后跟密集(20,激活='softmax')?这是在Keras做正确的方法吗? - London guy
来自Keras文档的是(keras.io/activations),它是等价的 - ihebiheb


答案:


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


12
2017-11-29 15:52



非常感谢,这很清楚! - Pusheen_the_dev
你能发现使用第一个的优点吗? - lejlot
模型定义更短,更紧凑。 - Marcin Możejko
所以在Keras,如果我必须在20个类上微调一个InceptionV3网络,我是否需要base_model.output,其中base_model是InceptionV3(),然后添加一个Dense(1024,激活+“relu”)(base_model.output后跟密集(20,激活='softmax')?这是在Keras做正确的方法吗? - London guy
来自Keras文档的是(keras.io/activations),它是等价的 - ihebiheb