0 votes
par dans Séquence 2
J'aimerais pouvoir créer un affichage de la couche Flatten, pour voir quelles sont les formes sur lesquelles les couches de convolution se sont concentrées. Y a-t-il une astuce pour afficher cette étape intermédiaire ?

2 Réponses

0 votes
par Vétéran du GPU 🐋 (48.7k points)
sélectionné par
 
Meilleure réponse
Avec Keras on peut créer un modèle qui se base sur le modèle entraîné mais qui s'arrête juste avant la couche Flatten pour récupérer les résultats de la convolution.

Un truc du genre :

submodel = keras.Model(model.input, model.get_layer(index = 3).output ) si la couche voulue est la 3e par exemple, ou alors par le nom model.get_layer("dense_1") par exemple, le nom étant donné dans la création du modèle avec une valeur par défaut, visualisable dans le model.summary()

Pour l'utiliser ensuite :
intermediate_result = submodel.predict(x_test)
0 votes
par

Je viens ajouter un petit commentaire qui ne remet aucunement en cause  la réponse de @Nathan. L'idée de "voir" ce que les différentes couches de convolution font exactement est un bon réflexe, mais vaut meiux se concentrer non pas sur la couche Flatten mais sur la 1ere voir la 2nd couche de convolution. "On" a montré que ces premières couches réalisent des transformations de type Transformée de Fourier voir Transformée en Ondelettes et reconnaissent des zones de transition. D'ailleurs les études sur le cerveaux ont également mis en évidence que la réponse des cils de l'organe de Corti (son) fonctionnent comme les  filtres d'ondelettes tout comme  les premieres couches du cortex visuel. 


Par contre plus on va profond dans le réseau, plus la 3eme dimension (dite "canaux") des resultats des convolutions vont devenir important à tel point que si on n'effectue que des convolution 2D pure alors on a une perte d'efficacité notable des réseaux. Or, comprendre ce que sont les transformations le long des canaux est toujours un domaine de recherche.

Donc je crains que regarder la couche Flatten vous semble assez enigmatique.

...