web-dev-qa-db-fra.com

Comment créer une fonction d'activation personnalisée avec Keras?

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?

13
Martin Thoma

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 .

30
Martin Thoma

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'))
0
Julien Nyambal