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!