IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques d'apprentissage profond Discussion :

Construction d'un autoencoder avec keras


Sujet :

Bibliothèques d'apprentissage profond

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Construction d'un autoencoder avec keras
    Bonjour à tous,

    J'essaye de reproduire cet autoencoder pour débruiter des électrocardiogrammes comme présenté dans ce papier : "Noise Reduction in ECG Signals Using Fully
    Convolutional Denoising Autoencoders. HSIN-TIEN CHIANG. 2019 "
    Voici le lien : https://ieeexplore.ieee.org/stamp/st...number=8693790

    La structure de leur autoencodeur se présente comme cela:

    Nom : aa.png
Affichages : 341
Taille : 68,0 Ko

    Il est précisé qu'il n'y a pas de pooling sur les couches, pas de fonction d'activation sur la couche de sortie et qu'il y a du batch normalisation sur les couches cachées.

    Voici le code que j'ai pu réaliser à partir de ces infos:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    def create_Conv1D():
        inputs = Input(shape = (len(X_train[0]),1))
     
        encoded = Conv1D(filters = 40 ,kernel_size = 16,strides=2, padding = 'same')(inputs)
        encoded = BatchNormalization()(encoded)
        encoded = Activation('elu')(encoded)  
     
        encoded = Conv1D(filters = 20 ,kernel_size = 16,strides=2,padding = 'same')(encoded)
        encoded = BatchNormalization()(encoded)
        encoded = Activation('elu')(encoded)
     
        encoded = Conv1D(filters = 20 ,kernel_size = 16,strides=2,padding = 'same')(encoded)
        encoded = BatchNormalization()(encoded)
        encoded = Activation('elu')(encoded)
     
        encoded = Conv1D(filters = 20 ,kernel_size = 16,strides=2,padding = 'same')(encoded)
        encoded = BatchNormalization()(encoded)
        encoded = Activation('elu')(encoded)
     
        encoded = Conv1D(filters = 40 ,kernel_size = 16,strides=2,padding = 'same')(encoded)
        encoded = BatchNormalization()(encoded)
        encoded = Activation('elu')(encoded)
     
        encoded = Conv1D(filters = 1 ,kernel_size = 16,strides=1,padding = 'same')(encoded)
        encoded = BatchNormalization()(encoded)
        encoded = Activation('elu')(encoded)
     
     
        decoded = Conv1D(filters = 40 ,kernel_size = 16,strides=2,padding = 'same')(encoded)
        decoded = BatchNormalization()(decoded)
        decoded = Activation('elu')(decoded)
        decoded = UpSampling1D(4)(decoded)
     
        decoded = Conv1D(filters = 20 ,kernel_size = 16,strides=2,padding = 'same')(decoded)
        decoded = BatchNormalization()(decoded)
        decoded = Activation('elu')(decoded)
        decoded = UpSampling1D(4)(decoded)
     
        decoded = Conv1D(filters = 20 ,kernel_size = 16,strides=2,padding = 'same')(decoded)
        decoded = BatchNormalization()(decoded)
        decoded = Activation('elu')(decoded)
        decoded = UpSampling1D(4)(decoded)
     
        decoded = Conv1D(filters = 20 ,kernel_size = 16,strides=2,padding = 'same')(decoded)
        decoded = BatchNormalization()(decoded)
        decoded = Activation('elu')(decoded)
        decoded = UpSampling1D(4)(decoded)
     
        decoded = Conv1D(filters = 40 ,kernel_size = 16,strides=2,padding = 'same')(decoded)
        decoded = BatchNormalization()(decoded)
        decoded = Activation('elu')(decoded)
        decoded = UpSampling1D(4)(decoded)
     
        decoded = Conv1D(filters = 1 ,kernel_size = 16,strides=1, padding = 'same')(decoded)
        autoencoder = Model(inputs,decoded)
     
        return autoencoder
    J'ai plusieurs questions :

    Est-ce que j'utilise bien le upsampling ? Dans l'article il n'y a aucune précision concernant cette action, le *4 est la seule config qui me permet de retomber sur ma dimension de départ (1024)
    Est-ce que le "Fully connected" correspond uniquement au remplacement de la dernière couche "dense" par la Conv1D ?
    Autre précision, mon accuracy reste proche de zero... Il doit donc y avoir un problème.

    Merci pour vos réponse !

    Bonne soirée

    Nicolas

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Ça ne répond probablement pas à tes questions mais peux-tu dire ce que signifie, pour toi, ces (encoded) et (decoded) après les fonctions ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Bonjour Vincent,

    Cette structure correspond à l'API de keras. Pour plus d'info voici le liens:
    https://keras.io/getting-started/functional-api-guide/

    En mettant (encoded) à la fin de la ligne cela fait appel à la couche précédente encoded. Même chose pour la décoded.

    Nicolas

Discussions similaires

  1. Support de cours : Construction d'Eclipse Forms avec la plateforme Eclipse
    Par Mickael Baron dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 02/07/2010, 22h17
  2. Réponses: 13
    Dernier message: 19/02/2009, 17h02
  3. Réponses: 16
    Dernier message: 17/11/2008, 13h46
  4. [Continuum] Construction d'un pom avec continuum
    Par ggalou08 dans le forum Intégration Continue
    Réponses: 4
    Dernier message: 07/04/2008, 14h46
  5. [Graphique]Construction d'un graph avec deux coordonnées
    Par tomsabourin79 dans le forum Access
    Réponses: 3
    Dernier message: 05/04/2007, 10h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo