В чем разница между keras.activations.softmax и keras.layers.Softmax? - PullRequest
0 голосов
/ 27 ноября 2018

В чем разница между keras.activations.softmax и keras.layers.Softmax?Почему существуют два определения одной и той же функции активации?

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

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

1 Ответ

0 голосов
/ 27 ноября 2018

Они эквивалентны друг другу с точки зрения того, что они делают.На самом деле, слой Softmax будет вызывать activations.softmax под капотом :

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)
...