Ce qui devrait être de forme en Sortie de keras modèle de couches

0

La question

je suis un peu confus au sujet de la sortie de la forme de keras couche. J'ai créé un exemple de keras modèle et a également affiché son résumé.

numberOfLSTMcells=1
n_timesteps_in=129
n_features=61
inp =Input(shape=(n_timesteps_in, n_features))
lstm= LSTM(numberOfLSTMcells,return_sequences=True, return_state=False) (inp)
fc=Dense(64,activation='relu',name='hidden_layer')(lstm)
out=Dense(1,activation='sigmoid',name='last_layer')(fc)
model = Model(inputs=inp, outputs=out)

Résumé de modèle

Model: "model_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_3 (InputLayer)         [(None, 129, 61)]         0         
_________________________________________________________________
lstm_2 (LSTM)                (None, 129, 1)            252       
_________________________________________________________________
hidden_layer (Dense)         (None, 129, 64)           128       
_________________________________________________________________
last_layer (Dense)           (None, 129, 1)            65        
=================================================================
Total params: 445
Trainable params: 445
Non-trainable params: 0

Ce que je pense de la forme de la dernière couche doit être (None,64,1). Parce que hidden_layers a 64 neurones qui va de l'entrée à last_layer

keras tensorflow
2021-11-23 20:02:29
1

La meilleure réponse

1

Étant donné que vous définissez le paramètre return_sequences pour True dans le LSTM couche, vous obtenez une séquence avec le même nombre de pas de temps comme entrée et de sortie de l'espace de 1 pour chaque timestep, d'où la forme (None, 129, 1). Ensuite, vous appliquez une Dense couche de ce tenseur, mais cette couche est toujours appliqué à la dernière dimension d'un tenseur, qui dans votre cas est de 1 et pas de 129. Par conséquent, vous obtenez la sortie (None, 129, 64). Ensuite, vous utilisez une dernière couche de sortie, qui est également appliqué à la dernière dimension de votre tenseur résultant dans la production avec la forme (None, 129, 1). Le Tensorflow docs aussi expliquer ce comportement:

Si l'entrée à la couche a un rang supérieur à 2, alors Dense calcule le produit scalaire entre les entrées et le noyau le long de la dernière axe des entrées et de l'axe 0 du noyau (à l'aide de tf.tensordot).

Vous pouvez définir return_sequences pour False si vous souhaitez travailler avec une 2D de sortie (batch_size, features) au lieu de la 3D (batch_size, time_steps, features)ou vous pouvez utiliser l' Flatten la couche.

2021-11-24 08:30:26

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................