Maison >développement back-end >Tutoriel Python >L'aplatissement ou le remodelage précède-t-il une couche dense Keras avec une entrée multidimensionnelle ?

L'aplatissement ou le remodelage précède-t-il une couche dense Keras avec une entrée multidimensionnelle ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-21 07:57:02740parcourir

Does Flatten or Reshape Precede a Keras Dense Layer with Multi-Dimensional Input?

Erreur de forme d'entrée : aplatir ou remodeler dans la couche dense Keras

Dans un réseau Keras typique, la couche dense attend des données d'entrée aplaties avec une seule dimension. Cependant, une erreur courante survient lors de l’utilisation de la couche Dense avec des données d’entrée de dimensionnalité supérieure. Cela peut conduire au résultat suivant :

<tf.Tensor 'dense_2/add:0' shape=(?, 2, 4) dtype=float32>

Comprendre l'écart

Contrairement à la documentation, qui indique que l'entrée de grande dimension est aplatie avant d'appliquer le Dense couche, les mises à jour récentes de Keras ont modifié ce comportement. Le calque est maintenant appliqué indépendamment au dernier axe du tenseur d'entrée.

Dans l'exemple ci-dessus, la forme d'entrée est (2, 3). La couche dense avec 4 unités est appliquée séparément à chaque ligne, ce qui donne une forme de sortie de (2, 4).

Implications et considérations

Ce changement a certaines implications :

  • Poids partagés : Chaque unité de la couche Dense est connectée à l'entrée avec les mêmes poids. Cela signifie qu'une couche dense appliquée à une entrée multidimensionnelle implémente efficacement des pondérations partagées sur plusieurs lignes.
  • Équivalence avec TimeDistributed : Pour les données de séries chronologiques, en utilisant TimeDistributed(Dense(...) ) est désormais équivalent à Dense(...) pour les tâches de prédiction en une seule étape.

Une illustration visuelle

Pour une meilleure compréhension, considérez ce qui suit illustration :

[Image d'un diagramme montrant comment une couche dense est appliquée à une entrée multidimensionnelle, avec des pondérations partagées entre les lignes]

Conclusion

Pour éviter l'erreur susmentionnée, assurez-vous que l'entrée de la couche Dense est aplatie avant l'application. Vous pouvez également adopter le nouveau comportement de la couche Dense lorsqu'il s'agit d'entrées multidimensionnelles, en tenant compte de ses implications et de ses avantages potentiels pour certaines architectures de réseau.

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