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/
我几个月前开始使用 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/