Maison  >  Article  >  développement back-end  >  Une couche dense dans Keras aplatit-elle le tenseur d'entrée ?

Une couche dense dans Keras aplatit-elle le tenseur d'entrée ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-21 07:53:30988parcourir

Does a Dense Layer in Keras Flatten the Input Tensor?

Comprendre le comportement de la couche dense de Keras

Dans Keras, la couche Dense effectue un produit scalaire entre ses poids et le tenseur d'entrée. Le comportement par défaut, comme indiqué dans la documentation, est d'aplatir le tenseur d'entrée si son rang est supérieur à 2. Cependant, contrairement à cette documentation, une couche Dense est en réalité appliquée sur le dernier axe du tenseur d'entrée.

Clarifions avec un exemple. Supposons une couche dense avec m unités appliquées à un tenseur d'entrée de forme (n_dim1, n_dim2, ..., n_dimk). La forme de sortie serait (n_dim1, n_dim2, ..., m).

Cette observation implique que TimeDistributed(Dense(...)) et Dense(...) sont fonctionnellement équivalents. De plus, l’application d’un calque Dense avec des poids partagés a un effet intéressant. Considérez le réseau de jouets suivant :

<code class="python">model = Sequential()
model.add(Dense(10, input_shape=(20, 5)))

model.summary()</code>

Le résumé du modèle ci-dessous ne montre que 60 paramètres pouvant être entraînés :

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_1 (Dense)              (None, 20, 10)            60        
=================================================================
Total params: 60
Trainable params: 60
Non-trainable params: 0
_________________________________________________________________

Cela se produit parce que chaque unité de la couche Dense se connecte aux cinq éléments de chaque ligne dans l’entrée avec les mêmes poids. Par conséquent, seuls 10 × 5 10 (paramètres de biais par unité) = 60 paramètres sont requis.

Pour illustrer davantage ce comportement, considérons la représentation visuelle suivante :

[Image de la couche dense application sur une entrée à deux dimensions ou plus dans Keras]

Dans cette image, la couche Dense (affichée en rouge) est appliquée à un tenseur d'entrée tridimensionnel. Le tenseur de sortie est également tridimensionnel, chaque colonne du tenseur d'entrée étant mappée indépendamment à une colonne du tenseur de sortie.

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