4

我正在使用 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 网络是否全连接?谢谢你!

网络架构

4

1 回答 1

1

首先,对于一般的 RNN,时间维度可以是任意的。对于您的情况,这意味着数字 29 不起作用。数字 2040 完全由数字 13(特征)和 20(GRU 中的单位)组成。

要了解该数字的来源,请查看wikipedia中的这张图片:

在此处输入图像描述

这就是基本 GRU 单元的样子。要了解变量的维度,请查看同一篇维基百科文章中的这个公式:

在此处输入图像描述

为了理解这一点,您只需要知道输入向量x[t]的维度为 13,内部状态和输出h[t], r[t], z[t], y[t]的维度为 20。如您所见,有几个地方使用了维度参数。所以,我个人不喜欢用“单位”这个词来形容它,因为它暗示里面有 20 个“东西”。事实上,它只是内部状态、矩阵和偏差的维度:

有了这些知识,并且知道公式中的维度必须匹配,您可以推导出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。

于 2019-03-20T13:59:59.433 回答