1

Je construis un projet d'exemple à Keras. Le projet consiste à identifier la différence entre les chats et les chiens. J'ai trouvé un example en ligne avec le modèle en tant que tel:Quelles couches dois-je utiliser pour Keras?

model = Sequential() 
model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150))) 
model.add(Activation('relu')) 
model.add(MaxPooling2D(pool_size=(2, 2))) 

model.add(Conv2D(32, (3, 3))) 
model.add(Activation('relu')) 
model.add(MaxPooling2D(pool_size=(2, 2))) 

model.add(Conv2D(64, (3, 3))) 
model.add(Activation('relu')) 
model.add(MaxPooling2D(pool_size=(2, 2))) 

Ma question est, comment les gens savent que les couches à utiliser? Y a-t-il des lignes directrices ou des règles de base pour utiliser Conv2D vs Conv1D par rapport à une autre couche?

Répondre

2

En bref, ils ne le font pas. Venir avec la bonne architecture est la majorité de la recherche en cours d'apprentissage en profondeur. Il y a des règles empiriques, des intuitions, mais surtout - faites l'expérience ou faites face à celles qui ont fonctionné.

En mots très courts:

  • convolutions sont utilisés lorsque vous avez la structure spatiale et/ou temporelle des données ainsi des images, vidéos, sons, etc.
  • mise en commun a des cas d'utilisation similaires à convolutions, il encore nécessite une structure spatiale et/ou temporelle (sauf si elle est appliquée à l'ensemble du canal/dimension) et permet de supprimer les «détails» (généralement le bruit) et de réduire la dimension du signal
  • entièrement conne cted sont nécessaires pour "forcer" une dimension donnée (donc souvent utilisée comme dernière couche) ou quand on ne connait pas vraiment de structure exploitable (puisqu'ils sont à peu près les plus génériques)

Cependant la question de savoir comment composer, quels hyperparamètres utiliser, combien d'utiliser est une énorme question de recherche ouverte, et au tout début la meilleure approche est de copier les architectures de quelqu'un d'autre et d'acquérir de l'expérience/intuition ce qui fonctionne et ce qui ne fonctionne pas les données avec lesquelles vous travaillez.

+0

merci pour ces règles. Je sais que c'est une question vraiment vaste, mais ces lignes directrices sont très utiles pour commencer. Qu'en est-il des pools de couches? Si vous avez d'autres infos, je parie qu'il y a beaucoup de gens qui trouveraient super utile d'apprendre sur ML par Keras. – Alexis

+0

Pooling est similaire à des circonvolutions dans les cas d'utilisation (ajouté à la réponse) – lejlot

+0

merci! Cela aide vraiment. Il y a tellement de choses là-bas qu'il est difficile de comprendre où commencer et comment les concepts sont connectés. Merci pour l'aide! – Alexis