Именно поэтому keras предоставляет слой Activation
:
model.add(Dense(10, input_dim=3))
model.add(Activation("tanh"))
model.add(Dense(10))
model.add(Activation("sigmoid"))
model.add(Dense(4))
РЕДАКТИРОВАТЬ
Если вы хотите использовать пользовательские активации, вы можете использовать одну из трех различных методы.
Предположим, вы переопределяете сигмоид:
def my_sigmoid(x):
return 1 / (1 + tf.math.exp(-x))
Использование Activation
layer:
model.add(Activation(my_sigmoid))
Используйте слой Lambda
:
model.add(Lambda(lambda x: 1 / (1 + tf.math.exp(-x))))
Определите пользовательский Layer
:
class MySigmoid(Layer):
def __init__(*args, **kwargs):
super().__init__(*args, **kwargs)
def call(inputs, **kwargs):
return 1 / (1+tf.math.exp(-inputs))
model.add(MySigmoid)
Метод 3 особенно полезен для Параметр c активаций, например PReLU
.
Метод 2 - это быстрое исправление для тестирования, но лично мне нравится избегать его.
Метод 1 - это способ go для простых функций.