Parfois, les activations standard par défaut comme ReLU, tanh, softmax, ... et les activations advanced comme LeakyReLU ne suffisent pas. Et cela pourrait aussi ne pas être dans keras-contrib .
Comment créez-vous votre propre fonction d'activation?
Crédits à ce commentaire de Github par Ritchie Ng .
from keras.layers import Activation
from keras import backend as K
from keras.utils.generic_utils import get_custom_objects
def custom_activation(x):
return (K.sigmoid(x) * 5) - 1
get_custom_objects().update({'custom_activation': Activation(custom_activation)})
model.add(Activation(custom_activation))
N'oubliez pas que vous devez importer cette fonction lorsque vous enregistrez et restaurez le modèle. Voir la note de keras-contrib .
Supposons que vous souhaitiez ajouter swish
ou gelu
à keras, les méthodes précédentes sont des insertions inline de Nice. Mais vous pouvez aussi les insérer dans l’ensemble des fonctions d’activation de keras, de manière à vous appeler comme si vous appeliez ReLU
. J'ai testé cela avec keras 2.2.2 (n'importe quelle v2 ferait l'affaire). Ajoutez à ce fichier $HOME/anaconda2/lib/python2.7/site-packages/keras/activations.py
la définition de votre fonction personnalisée (peut être différent pour votre version python et anaconda).
En keras interne:
$HOME/anaconda2/lib/python2.7/site-packages/keras/activations.py
def swish(x):
return (K.sigmoid(beta * x) * alpha *x)
Puis dans votre fichier python:
$HOME/Documents/neural_nets.py
model = Sequential()
model.add(Activation('swish'))