我正在使用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网络是否完全连接?谢谢!
发布于 2019-03-20 21:59:59
首先,对于一般的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。biases 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的,但上面说的一切也适用于GRUs。
https://stackoverflow.com/questions/55261557
复制相似问题