Couche personnalisée avec activation
Voici un exemple détaillé de comment définir une couche personnalisée incluant une fonction d’activation dans TensorFlow :
import tensorflow as tf
class CustomLayerWithActivation(tf.keras.layers.Layer): def __init__(self, units, activation=None, **kwargs): super(CustomLayerWithActivation, self).__init__(**kwargs) self.units = units self.activation = tf.keras.activations.get(activation)
def build(self, input_shape): self.w = self.add_weight( shape=(input_shape[-1], self.units), initializer='random_normal', trainable=True, name='weights' ) self.b = self.add_weight( shape=(self.units,), initializer='zeros', trainable=True, name='bias' )
def call(self, inputs): output = tf.matmul(inputs, self.w) + self.b if self.activation is not None: output = self.activation(output) return output
def get_config(self): config = super(CustomLayerWithActivation, self).get_config() config.update({ 'units': self.units, 'activation': tf.keras.activations.serialize(self.activation) }) return config
Explication des différentes parties :
__init__
: Initialise la couche avec le nombre d’unités et la fonction d’activation.build
: Crée les poids et les biais de la couche. Cette méthode est appelée la première fois que la couche est utilisée.call
: Définit le calcul effectué par la couche. Ici, nous effectuons une multiplication matricielle, ajoutons le biais, puis appliquons la fonction d’activation si elle est spécifiée.get_config
: Permet de sérialiser la configuration de la couche, ce qui est utile pour sauvegarder et charger des modèles.
Utilisation de la couche personnalisée :
# Création d'un modèle utilisant notre couche personnaliséemodel = tf.keras.Sequential([ CustomLayerWithActivation(64, activation='relu', input_shape=(32,)), CustomLayerWithActivation(10, activation='softmax')])
# Compilation du modèlemodel.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Affichage du résumé du modèlemodel.summary()
Cette approche vous permet de créer des couches personnalisées flexibles qui peuvent inclure diverses fonctions d’activation. Vous pouvez étendre cette classe pour inclure d’autres fonctionnalités spécifiques à vos besoins.