当 RNN 和嵌入链接在一起时,了解 Keras RNN 中的参数数量和 Keras 嵌入中的输出形状维度

Understanding number of params in Keras RNN and output shape dimension in Keras Embedding when RNN and Embedding are chained together

我从一些 youtube 视频中获得了这个 Keras 代码:

from keras.models import Sequential
from keras.layers import Embedding, SimpleRNN

model = Sequential()
model.add(Embedding(10000, 32))
model.add(SimpleRNN(32))
model.summary()

摘要的输出是这样的:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
embedding_1 (Embedding)      (None, None, 32)          320000    
_________________________________________________________________
simple_rnn_1 (SimpleRNN)     (None, 32)                2080      
=================================================================
Total params: 322,080
Trainable params: 322,080
Non-trainable params: 

首先我不明白为什么在简单的RNN中参数的数量是2080。接下来我不明白为什么嵌入层的输出形状是 (None, None, 32)

用于计算simpleRNN的参数个数 Number of parameters for Keras SimpleRNN

对于你的第二个问题,嵌入层的输出形状是(batch_size, input_length, output_dim),因为你没有指定嵌入层的input_length参数(输入序列的长度),它会采用默认值值为 None(变量)。

此外,由于 RNN 在每个 time-step 中块 运行,您可以将其添加到变量 time-step 层。但是,如果你想添加 Flatten 后跟 Dense Layers 将整个前一层作为输入,你必须在 Embedding Layer

中指定 input_length

SimpleRNN 中的每个时间步都是输出 Embedding。嵌入大小为 32。 在 RNN 中有两个参数矩阵 U 和 W

S = f(UX + WS) + b

由于X的shape是(None, 32),所以U的shape是32,S的shape是32,最后bias shape是1.

所以RNN层的参数个数是(32+32+1)*32=2080.