J'essaie de mieux comprendre les réseaux de neurones convolutifs en écrivant du code Python qui ne dépend pas des bibliothèques (comme Convnet ou TensorFlow), et je me retrouve coincé dans la littérature sur la façon de choisir des valeurs pour la matrice du noyau, quand effectuer une convolution sur une image.
J'essaie de comprendre les détails de l'implémentation à l'étape entre les cartes d'entités dans l'image ci-dessous montrant les couches d'un CNN.
Selon ce schéma:
Le noyau de la matrice du noyau "parcourt" l'image, créant une carte des caractéristiques, où chaque pixel est la somme de tous les produits par élément entre chaque poids du noyau (ou matrice de filtre) et la valeur de pixel correspondante de l'image d'entrée.
Ma question est: comment initialiser les poids de la matrice du noyau (ou du filtre)?
Dans la démonstration ci-dessus, ce sont simplement des 1 et des 0, mais je suppose que cela est simplifié par souci du diagramme.
Ces poids sont-ils formés à une étape de prétraitement? Ou choisi explicitement par l'utilisateur?
la source
Je ne peux pas faire de commentaire à cause de la mauvaise réputation et j'écris donc ceci en réponse à la question de Felipe Almeida. Après la réponse parfaite d'Indie AI, il n'y a rien à ajouter. Si vous souhaitez détecter des formes spécifiques (comme un X), vous pouvez prédéfinir un filtre spécifique, comme c'est le cas avec la détection des contours. Mais c'est la beauté de l'apprentissage en profondeur, il y a tellement de couches, tellement de filtres et tellement d'itérations que les filtres apprennent à eux seuls presque toutes les formes d'objets nécessaires. Donc théoriquement, s'il y a un X à détecter, l'un des filtres apprendra à détecter un X (comme le filtre jaune)
la source