Tenseurs, couches et autoencodeurs

Introduction au Deep Learning avec Keras

Miguel Esteban

Data Scientist & Founder

Accéder aux couches Keras

# Accéder à la première couche d'un modèle Keras
first_layer = model.layers[0]

# Afficher la couche, son entrée, sa sortie et ses poids print(first_layer.input) print(first_layer.output) print(first_layer.weights)
<tf.Tensor 'dense_1_input:0' shape=(?, 3) dtype=float32>
<tf.Tensor 'dense_1/Relu:0' shape=(?, 2) dtype=float32>
[<tf.Variable 'dense_1/kernel:0' shape=(3, 2) dtype=float32_ref>,
 <tf.Variable 'dense_1/bias:0' shape=(2,) dtype=float32_ref>]
Introduction au Deep Learning avec Keras

Qu'est-ce qu'un tenseur ?

# Définir un tenseur de rang 2 (2 dimensions)
T2 = [[1,2,3],
      [4,5,6],
      [7,8,9]]

# Définir un tenseur de rang 3 (3 dimensions) T3 = [[1,2,3], [4,5,6], [7,8,9], [10,11,12], [13,14,15], [16,17,18], [19,20,21], [22,23,24], [25,26,27]]
Introduction au Deep Learning avec Keras
# Importer le backend Keras
import tensorflow.keras.backend as K

# Récupérer les tenseurs d'entrée et de sortie d'une couche du modèle inp = model.layers[0].input out = model.layers[0].output
# Fonction qui mappe les entrées de la couche vers ses sorties inp_to_out = K.function([inp], [out])
# On passe une entrée et on obtient la sortie de cette première couche print(inp_to_out([X_train])
# Sorties de la première couche par échantillon de X_train
[array([[0.7, 0],...,[0.1, 0.3]])]
Introduction au Deep Learning avec Keras

Introduction au Deep Learning avec Keras

Autoencodeurs !

Introduction au Deep Learning avec Keras

Autoencodeurs !

Introduction au Deep Learning avec Keras

Cas d'usage des autoencodeurs

  • Réduction de dimension :
    • Représentation des entrées dans un espace plus petit.
  • Dénoyautage des données :
    • Si entraîné sur des données propres, le bruit inutile est filtré à la reconstruction.
  • Détection d'anomalies :
    • Mauvaise reconstruction lorsque le modèle reçoit des entrées inédites.
  • ...

Introduction au Deep Learning avec Keras

Construire un autoencodeur simple

# Instancier un modèle séquentiel
autoencoder = Sequential()

# Ajouter une couche cachée de 4 neurones et une couche d'entrée de 100 autoencoder.add(Dense(4, input_shape=(100,), activation='relu'))
# Ajouter une couche de sortie de 100 neurones autoencoder.add(Dense(100, activation='sigmoid'))
# Compiler le modèle avec la perte appropriée autoencoder.compile(optimizer='adam', loss='binary_crossentropy')
Introduction au Deep Learning avec Keras

Le découper en encodeur

# Construire un modèle séparé pour encoder les entrées
encoder = Sequential()
encoder.add(autoencoder.layers[0])

# La prédiction renvoie les sorties des 4 neurones de la couche cachée encoder.predict(X_test)
# Quatre nombres pour chaque observation de X_test
array([10.0234375, 5.833543, 18.90444, 9.20348],...)
Introduction au Deep Learning avec Keras

Expérimentons !

Introduction au Deep Learning avec Keras

Preparing Video For Download...