Maison  >  Article  >  développement back-end  >  Pourquoi l'entrée de la couche dense Keras se remodèle-t-elle de manière inattendue ?

Pourquoi l'entrée de la couche dense Keras se remodèle-t-elle de manière inattendue ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-21 07:57:30228parcourir

Why Does the Keras Dense Layer Input Reshape Unexpectedly?

Remodelage inattendu dans l'entrée de la couche dense de Keras : percer le mystère

Dans Keras, la couche dense est un élément de base couramment utilisé pour les réseaux de neurones . Cependant, les utilisateurs peuvent rencontrer un comportement inattendu où l'entrée n'est pas aplatie avant d'appliquer les opérations de la couche.

Dans l'extrait de code fourni :

input1 = layers.Input((2,3))
output = layers.Dense(4)(input1)

Au lieu d'aplatir le tenseur d'entrée input1 avec dimensions (2,3), on observe étonnamment un tenseur de sortie de dimensions (?, 2, 4). Cela contredit l'affirmation de la documentation selon laquelle les entrées dont le rang est supérieur à 2 doivent être aplaties.

L'examen de l'implémentation actuelle de Keras révèle cependant un comportement différent : la couche Dense est en fait appliquée au dernier axe du tenseur d'entrée. Cela signifie que dans l’exemple donné, chaque ligne 2D de input1 passe indépendamment à travers la couche densément connectée. Par conséquent, la sortie conserve la première dimension et ajoute le nombre d'unités spécifié (4) à la dernière dimension.

Cet écart par rapport à la documentation a des implications significatives :

  • Les opérations équivalentes de TimeDistributed(Dense(...)) et Dense(...) sur des entrées multidimensionnelles.
  • Matrices de poids partagées entre les unités de la couche Dense.

Exemple :

model = Sequential()
model.add(Dense(10, input_shape=(20, 5)))

model.summary()

Le résumé du modèle résultant montre seulement 60 paramètres entraînables, malgré la couche densément connectée comportant 10 unités. En effet, chaque unité se connecte aux 5 éléments de chaque ligne avec des poids identiques.

Illustration visuelle :

[Image : Illustration visuelle de l'application d'une couche dense sur un entrée avec deux dimensions ou plus dans Keras]

En conclusion, la couche Dense dans Keras s'applique indépendamment au dernier axe du tenseur d'entrée, conduisant à une sortie non aplatie dans certains scénarios. Ce comportement a des implications pour la conception du modèle et le partage des paramètres.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn