Какой должна быть форма вывода слоев модели keras

0

Вопрос

я немного смущен выходной формой слоя keras. Я создал образец модели keras, а также отобразил ее краткое описание.

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)

Краткое описание модели

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

Какой, по-моему, должна быть форма последнего слоя (None,64,1). Потому что hidden_layers имеет 64 нейрона, которые поступают в качестве входных данных в last_layer

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

Лучший ответ

1

Так как вы задали параметр return_sequences Для True в LSTM слой, вы получаете последовательность с тем же количеством временных шагов, что и на входе, и выходным пространством 1 для каждого временного шага, следовательно, форма (None, 129, 1). После этого вы применяете Dense слой к этому тензору, но этот слой всегда применяется к последнему измерению тензора, которое в вашем случае равно 1, а не 129. Поэтому вы получаете результат (None, 129, 64). Затем вы используете конечный выходной слой, который также применяется к последнему измерению вашего тензора, что приводит к выходу с формой (None, 129, 1). Документы Tensorflow также объясняют это поведение:

Если вход в слой имеет ранг больше 2, то Dense вычисляет точечное произведение между входами и ядром вдоль последней оси входов и оси 0 ядра (используя tf.tensordot).

Вы можете установить return_sequences Для False если вы хотите работать с 2D-выводом (batch_size, features) вместо 3D (batch_size, time_steps, features), или вы можете использовать Flatten слой.

2021-11-24 08:30:26

На других языках

Эта страница на других языках

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

Популярное в этой категории

Популярные вопросы в этой категории