问题标签 [gated-recurrent-unit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
455 浏览

keras - 如何在 Keras 中为每个时间步应用不同的密集层

我知道应用 TimeDistributed(Dense) 在所有时间步上应用相同的密集层,但我想知道如何为每个时间步应用不同的密集层。时间步数不可变。

PS:我看过以下链接,似乎找不到答案

0 投票
1 回答
548 浏览

python - 组合的 GRU 和 CNN 网络总是为所有输入返回相同的值

我正在尝试训练一个组合的 CNN 和 GRU/LSTM,以找出一系列移动图片中的对象数量和不移动的对象数量。出于这个原因,我使用 CNN 来处理我的图像并因此使用 GRU。我的问题是 GRU 总是为每个输入集返回相同的值。这可能是什么原因?

我已经尝试使用不同的学习率并在 GRU 之后添加线性层。

我的网络:

这是我的训练:

这是输出的示例,实际标签:

我的网络预测:

因此,对于这两个类,两个类(移动和不移动对象)的输出是相同的,但情况并非如此。

0 投票
1 回答
1408 浏览

python - RuntimeError: Expected hidden size (2, 24, 50), got (2, 30, 50)

我正在尝试建立一个模型来学习数据集中某些句子的分配分数(实数)。为此,我使用 RNN(在 PyTorch 中)。我定义了一个模型:

训练函数如下:

当我运行代码时,我收到此错误:

RuntimeError: Expected hidden size (2, 24, 50), got (2, 30, 50)

批量大小=30,隐藏大小=50,层数=1,双向=真。

我在最后一批数据中收到该错误。我检查了 PyTorch 中对 RNN 的描述来解决这个问题。PyTorch 中的 RNN 有两个输入参数和两个输出参数。输入参数是inputh_0h_0是一个张量,包括批量大小(num_layers*num_directions, batch, hidden size)中每个元素的初始隐藏状态。输出参数是output ans h_nh_n是一个张量,包括大小为 t=seq_len 的隐藏状态(num_layers*num_directions,batch,hidden size)。

在所有批次(最后一批除外)中,h_0 和 h_n 的大小相同。但在最后一批中,元素数量可能小于批量大小。因此 h_n 的大小是 (num_layers num_directions,tained_elements_in_last_batch, hidden size) 但 h_0 的大小仍然是 (num_layers num_directions, batch_size, hidden size)。

所以我在最后一批数据中收到了那个错误。

如何解决这个问题并处理 h_0 和 h_n 的大小不同的情况?

提前致谢。

0 投票
2 回答
3236 浏览

tensorflow - 计算 GRU 层的参数数量(Keras)

为什么GRU层的参数个数是9600?

不应该是 ((16+32)*32 + 32) * 3 * 2 = 9,408 吗?

或者,重新排列,

32*(16 + 32 + 1)*3*2 = 9408

在此处输入图像描述

0 投票
0 回答
212 浏览

tensorflow - 将 Keras Gru 模型转换为 tf-lite

我正在尝试将具有两个双向 GRU 层的自定义 Keras 模型转换为 tf-lite 以在移动设备上使用。我将我的模型转换为 protobuff 格式,并尝试使用 TensorFlow 给定的代码进行转换:

当我执行它时,它会运行一段时间,然后出现以下错误:

所以我查了那个文件,它说明了以下内容:

这似乎是正确的,因为我使用的是 5 个维度:[Batch, Sequence, Height, Width, Channels]

谷歌在这个问题上没有给我太多帮助,但也许我使用了错误的搜索词。

那么有什么办法可以避免这个错误,还是 tf-lite 根本不支持序列?

附言。我在给定的 docker 容器中使用 TensorFlow 1.14 和 python3。

0 投票
1 回答
191 浏览

gated-recurrent-unit - GRU的图表和方程之间的差异?

当我在阅读 Colah 的博客时,在图中我们可以清楚地看到 z t将变为 ~ h t而不是 r t 但方程式另有说明。这不应该是 z t *h t-1而不是 r t *h t-1。如果我错了,请纠正我。

格鲁乌

0 投票
1 回答
3170 浏览

pytorch - pytorch 中的 torch.nn.gru 函数的输入是什么?

我正在使用 gru 函数来实现 RNN。这个 RNN (GRU) 在一些 CNN 层之后使用。有人可以告诉我这里 GRU 函数的输入是什么吗?特别是,隐藏的大小是固定的吗?

根据我的理解,输入大小将是特征的数量,而 GRU 的隐藏大小总是固定为 128?有人可以纠正我。或提供他们的反馈

0 投票
1 回答
96 浏览

python - GRU 中的 W 和 U 表示什么?

我试图弄清楚如何反向传播 GRU 循环网络,但我无法准确理解 GRU 架构。

下图显示了具有 3 个神经网络的 GRU 单元,接收连接的先前隐藏状态和输入向量作为其输入。

GRU 示例

然而,这张我用于反向传播的图像显示了输入被转发到每个门的 W 和 U 中,添加,然后应用适当的激活函数。

GRU 反向传播

wikipedia 上显示的更新门的等式如下所示作为示例

zt = sigmoid((W(z)x t + U(z)h t-1 ))

有人可以向我解释一下 W 和 U 代表什么吗?

编辑:

在我发现的大多数来源中,W 和 U 通常被称为“权重”,所以我最好的猜测是 W 和 U 代表它们自己的神经网络,但这与我之前找到的图像相矛盾。

如果有人可以举例说明 W 和 U 如何在简单的 GRU 中工作,那将很有帮助。

图片来源: https ://cran.r-project.org/web/packages/rnn/vignettes/GRU_units.html https://towardsdatascience.com/animated-rnn-lstm-and-gru-ef124d06cf45

0 投票
2 回答
1663 浏览

machine-learning - GRU 和 LSTM 哪个更快

我尝试使用 GRU 和 LSTM 在 keras 上实现模型。两种实现的模型架构相同。正如我在许多博客文章中所读到的,与 LSTM 相比,GRU 的推理时间更快。但在我的情况下,GRU 并不快,事实上相对于 LSTMs 比较慢。任何人都可以找到原因。与 Keras 中的 GRU 有什么关系,还是我在任何地方都出错了。

非常感谢您的帮助...

提前致谢

0 投票
2 回答
1133 浏览

machine-learning - Keras - 具有经常丢失的 GRU 层 - 损失:'nan',准确度:0

问题描述

我正在阅读 François Chollet 的“Python 中的深度学习”(出版商网页github 上的笔记本)。复制第 6 章中的示例,我遇到了(我相信)GRU 层经常丢失的问题。

我第一次观察到这些错误的代码很长,所以我决定坚持最简单的问题,它可以复制错误:将 IMDB 评论分为“正面”和“负面”类别。

当我使用具有经常性 dropout 训练损失的 GRU 层时(在第一个 epoch 的几批之后)取“值” nan,而训练准确度(从第二个 epoch 开始)取值为 0。

定位问题

为了找出解决方案,我编写了下面给出的代码,该代码通过了几个模型(GRU/LSTM,{无 dropout,只有“正常”dropout,只有经常性 dropout,“正常”和经常性 dropout,rmsprop/adam})并呈现所有这些模型的损失和准确性。(它还为每个模型创建更小、独立的图表。)

请在下面找到两个主要图表:损失 - 二元交叉熵准确性(由于声誉低,我不允许在帖子中嵌入图像)。

我在回归模型中也遇到了类似的奇怪问题——MAE 在几千的范围内——在 $y$ 范围可能是几十的问题中。(我决定不在这里包含这个模型,因为它会使这个问题变得更长。)

模块和库、硬件的版本

  • 模块:
  • keras.json文件:
  • CUDA - 我的系统上安装了 CUDA 10.0 和 CUDA 10.1。
  • CUDnn - 我有三个版本:cudnn-10.0 v7.4.2.24、cudnn-10.0 v7.6.4.38、cudnn-9.0 v7.4.2.24
  • 显卡:英伟达 GTX 1050Ti 4gb
  • Windows 10 家庭版

问题

  1. 你知道这种行为可能是什么原因吗?
  2. 这可能是由多个 CUDA 和 CUDnn 安装引起的吗?在观察问题之前,我已经训练了几个模型(来自书本和我自己的模型)并且似乎表现得或多或少符合预期,同时有 2 个 CUDA 和 2 个 CUDnn 版本(上面没有 cudnn-10.0 v7.6.4.38 的那些)安装。
  3. 是否有任何官方/良好的 keras、tensorflow、CUDA、CUDnn(以及其他相关的东西,例如可能是 Visual Studio)的适当组合的来源?我真的找不到任何权威和最新的来源。

我希望我已经足够清楚地描述了一切。如果您有任何问题,请询问。