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 configExplication 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.