Lors de l'utilisation de CNN avec tensorflow, à quoi ressemble la matrice de convulsion (quelles sont les valeurs du noyau) ?

Regardez sur cet exemple de base de CNN :

    model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
    model.add(layers.MaxPooling2D((2, 2)))
    model.add(layers.Conv2D(64, (3, 3), activation='relu'))
    model.add(layers.MaxPooling2D((2, 2)))
    model.add(layers.Conv2D(64, (3, 3), activation='relu'))
  1. à quoi ressemble la matrice de convolution ? quelles sont les valeurs de la matrice 3x3 ?

  2. Dans l'exemple ci-dessus, nous utilisons 3 couches Conv2D (chaque couche utilise une matrice de convulsion 3x3). Ces 3 matrices sont-elles identiques ? ou ils auront des valeurs différentes ?

2
user3668129 15 nov. 2020 à 15:25

1 réponse

Meilleure réponse
  1. Chaque couche de convolution aura un poids et un biais qui peuvent être inspectés en utilisant
# For 1 layer <conv> (weight)
model.layers[0].get_weights()[0]

# For 1 layer <conv> (bias)
model.layers[0].get_weights()[1]

# For 2 layer <pool> (no weight and bias term) <so empty list is returned>
model.layers[1].get_weights()

#and so on....

La matrice conv est un tenseur 4D (in_channel × filter_size × filter_size × out_channel) et pour votre cas : (3, 3, 3, 32).

  1. Chaque filtre aura une valeur différente. Rien n'est commun.
1
Lawhatre 15 nov. 2020 à 15:41