Présentation de l'implémentation keras d'une nouvelle fonction d'activation appelée FReLU.
Pour plus d'informations sur l'implémentation de FReLU + dans pytorch, veuillez lire l'article suivant. Cela est expliqué très soigneusement. Référence: Naissance & commentaire de la nouvelle fonction d'activation "FReLU"!
Cet article concerne l'implémentation de FReLU dans tf.keras. Avec Depthwise Conv2D et Lambda, vous pouvez l'implémenter rapidement.
y= \max(x,\mathbb{T}(x))
$ \ mathbb {T} (\ cdot) $ est DepthwiseConv2D.
tensorflow 2.3.0
FReLU.py
from tensorflow.keras.layers import DepthwiseConv2D,BatchNormalization
import tensorflow as tf
from tensorflow.keras.layers import Lambda
from tensorflow.keras import backend as K
#Symbole mathématique max()Définition de
def max_unit(args):
inputs , depthconv_output = args
return tf.maximum(inputs, depthconv_output)
def FReLU(inputs, kernel_size = 3):
#T(x)Partie de
x = DepthwiseConv2D(kernel_size, strides=(1, 1), padding='same')(inputs)
x = BatchNormalization()(x)
#Calculer la forme du tenseur pour Lambda
x_shape = K.int_shape(x)
#max(x, T(x))Partie de
x = Lambda(max_unit, output_shape=(x_shape[1], x_shape[2], x_shape[3]))([inputs, x])
return x
La mise en œuvre elle-même est facile, n'est-ce pas? J'essaierai d'implémenter la version Layer quand j'aurai le temps. C'est bien car le nom apparaîtra lorsque cette personne résumera. Si vous avez des questions ou des préoccupations, veuillez laisser un commentaire.
Recommended Posts