了解GRU架构 - Keras

问题描述 投票:4回答:1

我正在使用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

keras neural-network recurrent-neural-network gated-recurrent-unit
1个回答
1
投票

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

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

enter image description here

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

enter image description here

要明白这一点,你只需要知道输入向量x[t]在你的情况下有维度13,内部状态和输出h[t], r[t], z[t], y[t]有20维。正如你所看到的,有几个地方使用维度参数。所以,我个人不喜欢使用“单位”一词,因为它表明里面有20个“东西”。实际上,它只是内部状态,矩阵和偏差的维度:

有了这些知识,并且知道公式中的维度必须匹配,你可以推导出W矩阵必须具有维数20 x 13并且U matices必须具有维度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中工作,我强烈推荐this question的答案。它说它是关于LSTM的,但是一切都说适用于GRU。

© www.soinside.com 2019 - 2024. All rights reserved.