#tensorflow #keras #deep-learning #lstm #recurrent-neural-network
#tensorflow #keras #глубокое обучение #lstm #рекуррентная нейронная сеть
Вопрос:
model = tf.keras.Sequential([tf.keras.layers.Embedding(tokenizer.vocab_size, 64),tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64,return_sequences=True))
tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32)),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])
Второй слой содержит 64 скрытых элемента, и поскольку return_sequences=True, он также будет выводить 64 последовательности. Но как это может быть передано в 32 скрытых модуля LSTM. Не приведет ли это к ошибке несоответствия формы?
Ответ №1:
На самом деле нет, это не вызовет этого. Прежде всего, второй слой будет иметь форму вывода не 64
, а вместо 128
. Это связано с тем, что вы используете Bidirectional
layer, он будет объединен прямым и обратным проходом, и поэтому ваш вывод будет (None, None, 64 64=128)
. Вы можете обратиться к ссылке.
RNN
Данные формируются следующим образом (Batch_size, time_steps, number_of_features)
. Это означает, что при попытке соединить два слоя с разными нейронами характеристики увеличиваются или уменьшаются в зависимости от количества нейронов.Вы можете перейти по конкретной ссылке для получения более подробностей.
И для вашего конкретного кода вот как будет выглядеть сводка модели. Итак, чтобы ответить вкратце, это не будет несоответствием.
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
embedding (Embedding) (None, None, 64) 32000
_________________________________________________________________
bidirectional (Bidirectional (None, None, 128) 66048
_________________________________________________________________
bidirectional_1 (Bidirection (None, 64) 41216
_________________________________________________________________
dense_2 (Dense) (None, 64) 4160
_________________________________________________________________
dense_3 (Dense) (None, 1) 65
=================================================================
Total params: 143,489
Trainable params: 143,489
Non-trainable params: 0
_________________________________________________________________
Комментарии:
1. «Это означает, что при попытке соединить два слоя с разными нейронами характеристики увеличиваются или уменьшаются в зависимости от количества нейронов» Я не понял это утверждение
2. ооо, ладно, понял. Итак, в принципе, если у меня есть 10 объектов во входных данных, но нейроны, которые я установил как 8. будет ли это искажать оставшиеся 2 объекта?