you*_*ark 8 machine-learning neural-network deep-learning keras recurrent-neural-network
我有一个SimpleRNN喜欢:
model.add(SimpleRNN(10, input_shape=(3, 1)))
model.add(Dense(1, activation="linear"))
Run Code Online (Sandbox Code Playgroud)
模型摘要说:
simple_rnn_1 (SimpleRNN) (None, 10) 120
Run Code Online (Sandbox Code Playgroud)
我很好奇的参数个数120为simple_rnn_1。
有人能回答我的问题吗?
blu*_*nox 10
当您查看表格的标题时,您会看到标题Param:
Layer (type) Output Shape Param
===============================================
simple_rnn_1 (SimpleRNN) (None, 10) 120
Run Code Online (Sandbox Code Playgroud)
该数字表示相应层中可训练参数(权重和偏差)的数量,在这种情况下,您的SimpleRNN.
编辑:
权重的计算公式如下:
recurrent_weights + input_weights + 偏差
*响应:(num_features + num_units)* num_units + num_units
解释:
num_units = 等于 RNN 中的单元数
num_features = 等于输入的特征数
现在您的 RNN 中发生了两件事。
首先,您有循环循环,其中将状态循环输入模型以生成下一步。循环步骤的权重为:
recurrent_weights = num_units*num_units
其次,您在每一步都有新的序列输入。
输入权重= num_features*num_units
(通常最后一个 RNN 状态和新输入都连接起来,然后乘以一个权重矩阵,但输入和最后一个 RNN 状态使用不同的权重)
所以现在我们有了权重,缺少的是偏差 - 对于每个单位一个偏差:
偏差= num_units*1
所以最后我们有公式:
recurrent_weights + input_weights +偏差
或者
num_units* num_units + num_features* num_units + 偏差
=
(num_features + num_units)* num_units + 偏差
在您的情况下,这意味着可训练的参数是:
10*10 + 1*10 + 10 = 120
我希望这是可以理解的,如果不只是告诉我 - 这样我就可以对其进行编辑以使其更清楚。
使用像这样的简单网络可能更容易在视觉上理解:
权重数为 16 (4 * 4) + 12 (3 * 4) = 28,偏差数为 4。
其中 4 是单位数,3 是输入维度数,所以公式就像第一个答案:num_units ^ 2 + num_units * input_dim + num_units或者简单地说num_units * (num_units + input_dim + 1),对于问题中给出的参数,它产生 10 * (10 + 1 + 1) = 120 .
| 归档时间: |
|
| 查看次数: |
3843 次 |
| 最近记录: |