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

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

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

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!

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