我从一些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)
答案 0 :(得分:2)
用于计算simpleRNN的参数数量 Number of parameters for Keras SimpleRNN
对于第二个问题,由于未指定嵌入层的(batch_size, input_length, output_dim)
参数(输入序列的长度),所以嵌入层的输出形状为input_length
,它将采用默认值是None
(变量)。
此外,由于RNN块在每个时间步中运行,因此您可以将其添加到可变的时间步层中。但是,如果要添加Flatten,然后添加以整个上一层作为输入的密集层,则必须在嵌入层中指定input_length
答案 1 :(得分:1)
SimpleRNN中的每个时间步都是输出Embedding。嵌入大小为32。 在RNN中,有两个参数矩阵U和W
S = f(UX + WS) + b
由于X的形状为(None,32),所以U的形状为32,S的形状为32。最后一个偏斜形状为1。
因此在RNN层中,参数的数量为(32+32+1)*32=2080
。