Если ваша модель имеет выходную форму (None, m, n)
и вы хотите вычислить softmax по второй оси, вы можете просто использовать метод активации softmax
и передать аргумент axis
это (в вашем случае это должно быть axis=1
):
from keras import activations
def the_softmax(axis):
def my_softmax(x):
return activations.softmax(x, axis=axis)
return my_softmax
# sequential model
model.add(Dense(..., activation=the_softmax(1)))
# functional model
output = Dense(..., activation=the_softmax(1))(prev_layer_output)
В качестве альтернативы, если вы хотите использовать его в качестве независимого слоя, вы можете использовать слой Lambda
и бэкэнд softmax
функция:
from keras import backend as K
def the_softmax(axis):
def my_softmax(x):
return K.softmax(x, axis=axis)
return my_softmax
# sequential model
model.add(Lambda(the_softmax(1)))
# functional model
output = Lambda(the_softmax(1))(prev_layer_output)