Keras - 无法理解 RNN 单元

Keras - Trouble understanding RNN units

我几个月前开始使用 Tensorflow 和 tf.keras 进行深度学习。

我完全理解经典密集层或 Convolutional/pooling 层背后的概念,其中单位参数是神经元或过滤器的数量。

我最近转到了RNN,但我对这个单元参数感到困惑。

在书本示例的以下代码中,我输入了 50 个周期的时间序列,但我不明白 SimpleRNN 层中的 20 个真正代表什么。在 ANN 中,第一个密集层具有与输入相同数量的参数,这让我感到困惑。

model = keras.models.Sequential([
    keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),
    keras.layers.SimpleRNN(20, return_sequences=True),
    keras.layers.SimpleRNN(1)
])

还有致密层的还有:

model = keras.models.Sequential([
    keras.layers.SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),
    keras.layers.SimpleRNN(20),
    keras.layers.Dense(1)
])

感谢您的帮助!

对于keras.layers.SimpleRNN中的units或者keras提供的任何RNN结构,你可以认为它是基本RNN结构的扩展,在单个RNN单元中,包含那么多数字用于计算输入的单位。如您所知,RNN 中的单位是 tanh,因此如果 units=1 则它将是左侧的图形,对于 units=3 右侧的图形

      output           output1  output2  output3
        ^                   ^      ^      ^
        |                   |      |      |
       tanh                tanh   tanh   tanh
        ^                   ^      ^      ^
        |                   |      |      |
input ---          input ------------------

简单的看成CNN里的filters,说不定能看出概念来。 推荐:https://colah.github.io/posts/2015-08-Understanding-LSTMs/