keras.activations.softmax 和 keras.layers.Softmax 有什么区别?

What is the difference between keras.activations.softmax and keras.layers.Softmax?

keras.activations.softmaxkeras.layers.Softmax 有什么区别?为什么同一个激活函数有两个定义?

keras.activations.softmax: https://keras.io/activations/

keras.layers.Softmax: https://keras.io/layers/advanced-activations/

他们在做的事情上是等价的。实际上,Softmax 层会调用 activations.softmax under the hood:

def call(self, inputs):
    return activations.softmax(inputs, axis=self.axis)

但是它们的区别在于Softmax层可以直接作为层使用:

from keras.layers import Softmax

soft_out = Softmax()(input_tensor)

但是,activations.softmax不能直接作为图层使用。相反,您可以通过 activation 参数将其作为其他层的激活函数传递:

from keras import activations

dense_out = Dense(n_units, activation=activations.softmax)

此外,请注意,使用 Softmax 层的好处在于它采用 axis 参数,您可以在输入的另一个轴而不是最后一个轴上计算 softmax(是默认值):

soft_out = Softmax(axis=desired_axis)(input_tensor)