Maison > développement back-end > Tutoriel Python > 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
Libérer: 2024-10-21 07:57:30
original
376 Les gens l'ont consulté

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)
Copier après la connexion

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()
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal