Quello che dovrebbe essere Uscita la forma di keras modello a strati

0

Domanda

io sono po ' confuso circa l'output forma di keras livello. Ho creato un esempio di keras modello e anche la sua sintesi.

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)

Sintesi del modello

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

Quello che io penso che la forma dell'ultimo strato deve essere (None,64,1). Perché hidden_layers ha 64 neuroni che va come input per last_layer

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

Migliore risposta

1

Poiché è impostato il parametro return_sequences per True nel LSTM livello, si ottiene una sequenza con lo stesso numero di passaggi di tempo, come il vostro input e uno di output spazio di 1 per ogni passo temporale, quindi la forma (None, 129, 1). Successivamente, si applica un Dense strato di questo tensore, ma questo livello è sempre applicato per l'ultima dimensione di un tensore, che nel tuo caso è 1 e non 129. Pertanto, si ottengono i risultati (None, 129, 64). Quindi, è possibile utilizzare un ultimo strato di uscita, che viene applicato anche l'ultima dimensione della vostra tensore con conseguente uscita con la forma (None, 129, 1). Il Tensorflow docs anche spiegare questo comportamento:

Se l'input per la strato ha un grado maggiore di 2, allora Denso calcola il prodotto di puntino tra gli ingressi e il kernel lungo l' ultimo asse di ingressi e asse 0 del kernel (uso di tf.tensordot).

È possibile impostare return_sequences per False se si desidera lavorare con un 2D in uscita (batch_size, features) invece di 3D (batch_size, time_steps, features)oppure è possibile utilizzare il Flatten livello.

2021-11-24 08:30:26

In altre lingue

Questa pagina è in altre lingue

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