[Keras Framework] Couche de convolution : Question sur un filtre en particulier

a marqué ce sujet comme résolu.

Salut à tous,

Je suis le tutoriel suivant : https://hub.packtpub.com/using-srgans-to-generate-photo-realistic-images-tutorial/ .

A l’étape N°3, une couche de convolution est définie avec un filtre de taille 9 (3x3 sauf erreur de ma part).

Normalement on est censé définir les coefficients de ce filtre (il existe d’ailleurs des filtres qui détectent les bords, d’autres qui détectent des caractéristiques d’images autres, et tout cela en fonction des valeurs qui y sont stockées).

Or justement, à quel moment les valeurs de ce filtre sont-elles définies ?

Ligne en question :

gen1 = Conv2D(filters=64, kernel_size=9, strides=1, padding=’same’, activation=’relu’)(input_layer)

On passe bien l’image (input_layer) au filtre, dont on définit la taille (9) mais qu’en est-il de ses valeurs ? Pour le moment je n’ai pas compris ce qu’est filters, strides et padding.

Je ne connais pas ce framework…

Mais normalement, on fait une différence entre les hyperparametres -> (à quoi ressemble le réseau, i.e. les différentes couches, leurs tailles, paddings etc) et les parametres de poids synaptiques, qui eux peuvent évoluer en fonction de l’algorithme utilisé (retropropagation du gradient, selection nat…)

Pour le padding (pour le reste je ne sais pas), voir wikipedia : https://fr.wikipedia.org/wiki/R%C3%A9seau_neuronal_convolutif#Param%C3%A9trage

+0 -0

Bein les coefficients du filtre sont hyperparamétrisés normalement. Or là je n’en vois pas.

Ma question porte bien sur ces coefficients. Pas sur le reste. Où sont-ils ?

Pour être clair, un coefficient = une valeur de la matrice. Et matrice = le filtre, syn. noyau.

Le principe de ce tuto est de construire un GAN (Generative Adversarial Network). Dans l’étape 3, on définit une couche d’un réseau convolutionnel.

Le principe d’une couche conv est que les coefficients des filtres ne sont pas définis à la main, mais c’est l’entraînement qui va petit à petit définir ces poids, pour construire des filtres qui sont adaptés à la tâche en question.

Remarque dans un coin, je ne pense pas que ce soit judicieux de commencer par un tuto sur les Gans, qui sont des réseaux de neurones plutôt complexes.

Ahbon?dans un autre cours j’ai vu des filtres dont les valeurs étaient bien définies, et à côté de chaque filtre était indiqué ce à quoi il sert (detectio' de contours, etc).

Du coup je pensais que c’était un hyperparametre mais au temps pour moi.

Merci !

Edit : c’est sans doute parce que le filtre est ici utilisé dans un Gan?

+0 -0

Ce n’est pas une particularité du GAN. Dans les réseaux de neurones de manière générale, on définit les couches uniquement avec les hyperparamètres, c’est-à-dire taille, nombre de neurones, éventuellement padding, stride etc. Les poids sont appris par le réseau au cours de l’entraînement.

Si on définit les poids "à la main", on perd tout l’intérêt du réseau de neurone qui est d’apprendre les meilleurs filtres pour une tâche donnée (à moins que ce ne soit qu’une initialisation pour accélérer l’entraînement).

Les filtres à la main, c’est utile pour comprendre ce que va chercher à faire un réseau, et par la suite pour faire des considérations sur un réseau donné en observant les filtres qu’il a appris.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte