Jaka powinna być forma wyświetlania warstw modelu keras

0

Pytanie

jestem trochę zdezorientowany wyjściowy formą warstwy keras. Stworzyłem przykładowy model keras, a także unaocznił jej krótki opis.

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)

Krótki opis modelu

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

Jaki jest, według mnie, powinna być forma ostatniej warstwy (None,64,1). Bo hidden_layers ma 64 neuronu, które postępują jako danych wejściowych w last_layer

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

Najlepsza odpowiedź

1

Tak jak ustawisz parametr return_sequences Dla True w LSTM warstwa, otrzymasz sekwencja z taką samą ilością kroków czasowych, co na wejściu i weekendy miejsca 1 dla każdego kroku czasowego, dlatego forma (None, 129, 1). Po zastosowaniu Dense warstwa do tego тензору, ale ta warstwa zawsze stosuje się do ostatniego pomiaru tensora, która w twoim przypadku jest równa 1, a nie 129. Dlatego otrzymasz wynik (None, 129, 64). Następnie używasz końcowy warstwie, które stosuje się również do ostatniego pomiaru twojego tensora, co prowadzi do wyjścia z formą (None, 129, 1). Dokumenty Tensorflow również tłumaczą to zachowanie:

Jeśli wejście na warstwa ma stopień większy niż 2, to Dense oblicza punktowe dzieło między wejściami i jądrem wzdłuż ostatniej osi wejść i osi 0 jądra (za pomocą tf.tensordot).

Można ustawić return_sequences Dla False jeśli chcesz pracować z 2D wnioskiem (batch_size, features) zamiast 3D (batch_size, time_steps, features)lub można użyć Flatten warstwę.

2021-11-24 08:30:26

W innych językach

Ta strona jest w innych językach

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