Je couche Conv2D définit comme:
Comment obtenir correctement les poids de couche de Conv2D dans keras?
Conv2D(96, kernel_size=(5, 5),
activation='relu',
input_shape=(image_rows, image_cols, 1),
kernel_initializer=initializers.glorot_normal(seed),
bias_initializer=initializers.glorot_uniform(seed),
padding='same',
name='conv_1')
Ceci est la première couche dans mon réseau.
Les dimensions d'entrée sont de 64 sur 160, l'image est de 1 canal.
J'essaie de visualiser les poids de cette couche convolutionnelle, mais je ne sais pas comment les obtenir.
Voici comment je fais maintenant:
1.Call
layer.get_weights()[0]
Ce returs un tableau de forme (5, 5, 1, 96). 1 est parce que les images sont à 1 canal.
2.Take 5 par 5 filtres par
layer.get_weights()[0][:,:,:,j][:,:,0]
Très laid, mais je ne suis pas sûr de savoir comment simplifier, les commentaires sont très appréciés.
Je ne suis pas sûr dans ces 5 par 5 carrés. Sont-ils des filtres en fait?
Si personne d'autre ne pourrait s'il vous plaît dire comment attraper correctement les filtres du modèle?
Merci pour votre réponse! C'est une chose vraiment bizarre ici: les poids sont similaires en cas d'initialisation aléatoire. J'utilise l'initialisation de glorot recommandée pour les couches de conv. La question la plus de confusion pour moi est: nous formons le réseau mais éprouvons les mêmes poids. Qu'avons nous entrainé? Vous n'avez pas de réponse à cela ... –
Alors, quelle est la troisième dimension des poids? Dans 'x1w = x.get_weights() [0] [:,:, 0,:]', le 0 dans '[:,:, 0,:]'. Je pense que les deux premiers dims sont le noyau x et y, et le dernier est le nombre de noyaux - mais je n'ai aucune idée de ce qu'est la 3ème dimension. Cela semble être la dimension de la sortie de la couche précédente, mais je ne comprends pas pourquoi ou ce que cela signifie vraiment. – wordsforthewise
Le 0 est le canal rouge. Les trois dimensions sont vert et bleu rouge. Le premier est x le second est y le troisième est le canal et le dernier est le nième convolutions. – John