了解 GRU 架构 - Keras
Understanding GRU Architecture - Keras
我正在使用 Mycroft AI 唤醒词检测,我正在尝试了解网络的维度。以下几行显示了 Keras 中的模型:
model = Sequential()
model.add(GRU(
params.recurrent_units, activation='linear',
input_shape=(pr.n_features, pr.feature_size), dropout=params.dropout, name='net'))
model.add(Dense(1, activation='sigmoid'))
我的特征尺寸为 29*13。 GRU 层有 20 个单元。我现在的问题是,我的模型如何在 GRU 层中拥有 2040 个可学习参数?这些单位是如何连接的?也许我对 GRU 网络的整体理解是错误的,但我只能找到单个单元的解释,而不能找到整个网络的解释。 GRU网络是全连接的吗?
谢谢你!
Network Architecture
首先,对于一般的RNN,时间维度可以是任意的。对于您的情况,这意味着数字 29 不起作用。数字 2040 完全由数字 13(特征)和 20(GRU 中的单元)组成。
要了解数字的来源,请查看来自 wikipedia 的这张图片:
这是基本的 GRU 细胞的样子。
要了解变量的维度,请查看同一篇维基百科文章中的这个公式:
为了理解这一点,您只需要知道输入向量 x[t]
在您的情况下具有维度 13,并且内部状态和输出 h[t], r[t], z[t], y[t]
具有维度 20。您可以看,有几个地方使用了维度参数。所以,我个人不喜欢用"units"这个词来形容它,因为它暗示里面有20个"things"。其实就是内部状态、矩阵、偏差的维度:
有了这些知识,并且还知道公式中的维数必须匹配,您可以推导出 W
矩阵必须具有维数 20 x 13
而 U
矩阵必须具有维度20 x 20
。偏差 b
必须具有维度 20
.
则参数总数计算为
#Params = 3 * dim(W)
+ 3 * dim(U)
+ 3 * dim(b)
= 3 * 20*13 + 3 * 20*20 + 3 * 20
= 2040
为了更深入地了解 RNN 在 Keras 中的工作原理,我强烈推荐 的答案。它说它是关于 LSTM 的,但那里所说的一切也适用于 GRU。
我正在使用 Mycroft AI 唤醒词检测,我正在尝试了解网络的维度。以下几行显示了 Keras 中的模型:
model = Sequential()
model.add(GRU(
params.recurrent_units, activation='linear',
input_shape=(pr.n_features, pr.feature_size), dropout=params.dropout, name='net'))
model.add(Dense(1, activation='sigmoid'))
我的特征尺寸为 29*13。 GRU 层有 20 个单元。我现在的问题是,我的模型如何在 GRU 层中拥有 2040 个可学习参数?这些单位是如何连接的?也许我对 GRU 网络的整体理解是错误的,但我只能找到单个单元的解释,而不能找到整个网络的解释。 GRU网络是全连接的吗? 谢谢你!
Network Architecture
首先,对于一般的RNN,时间维度可以是任意的。对于您的情况,这意味着数字 29 不起作用。数字 2040 完全由数字 13(特征)和 20(GRU 中的单元)组成。
要了解数字的来源,请查看来自 wikipedia 的这张图片:
这是基本的 GRU 细胞的样子。 要了解变量的维度,请查看同一篇维基百科文章中的这个公式:
为了理解这一点,您只需要知道输入向量 x[t]
在您的情况下具有维度 13,并且内部状态和输出 h[t], r[t], z[t], y[t]
具有维度 20。您可以看,有几个地方使用了维度参数。所以,我个人不喜欢用"units"这个词来形容它,因为它暗示里面有20个"things"。其实就是内部状态、矩阵、偏差的维度:
有了这些知识,并且还知道公式中的维数必须匹配,您可以推导出 W
矩阵必须具有维数 20 x 13
而 U
矩阵必须具有维度20 x 20
。偏差 b
必须具有维度 20
.
则参数总数计算为
#Params = 3 * dim(W)
+ 3 * dim(U)
+ 3 * dim(b)
= 3 * 20*13 + 3 * 20*20 + 3 * 20
= 2040
为了更深入地了解 RNN 在 Keras 中的工作原理,我强烈推荐