Я пытался вычислить количество параметров в ячейке LSTM в Керасе. Я создал две модели, одну с LSTM, а другую с CuDNNLSTM.
Частичная сводка моделей:
CuDNNLSTM Модель:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
embedding (Embedding) (None, None, 300) 192000
_________________________________________________________________
bidirectional (Bidirectional (None, None, 600) 1444800
Модель LSTM
Layer (type) Output Shape Param #
=================================================================
embedding_1 (Embedding) (None, None, 300) 192000
_________________________________________________________________
bidirectional (Bidirectional (None, None, 600) 1442400
Количество параметров в LSTM соответствует формуле для вычисления параметра lstm доступно по всему inte rnet. Тем не менее, CuDNNLSTM имеет 2400 дополнительных параметров.
В чем причина этих дополнительных параметров?
код
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
from tensorflow.compat.v1.keras.models import Sequential
from tensorflow.compat.v1.keras.layers import CuDNNLSTM, Bidirectional, Embedding, LSTM
model = Sequential()
model.add(Embedding(640, 300))
model.add(Bidirectional(<LSTM type>(300, return_sequences=True)))