问题标签 [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.
keras - 如何在 Keras 中为每个时间步应用不同的密集层
我知道应用 TimeDistributed(Dense) 在所有时间步上应用相同的密集层,但我想知道如何为每个时间步应用不同的密集层。时间步数不可变。
PS:我看过以下链接,似乎找不到答案
python - 组合的 GRU 和 CNN 网络总是为所有输入返回相同的值
我正在尝试训练一个组合的 CNN 和 GRU/LSTM,以找出一系列移动图片中的对象数量和不移动的对象数量。出于这个原因,我使用 CNN 来处理我的图像并因此使用 GRU。我的问题是 GRU 总是为每个输入集返回相同的值。这可能是什么原因?
我已经尝试使用不同的学习率并在 GRU 之后添加线性层。
我的网络:
这是我的训练:
这是输出的示例,实际标签:
我的网络预测:
因此,对于这两个类,两个类(移动和不移动对象)的输出是相同的,但情况并非如此。
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 有两个输入参数和两个输出参数。输入参数是input和h_0。h_0是一个张量,包括批量大小(num_layers*num_directions, batch, hidden size)中每个元素的初始隐藏状态。输出参数是output ans h_n。h_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 的大小不同的情况?
提前致谢。
tensorflow - 将 Keras Gru 模型转换为 tf-lite
我正在尝试将具有两个双向 GRU 层的自定义 Keras 模型转换为 tf-lite 以在移动设备上使用。我将我的模型转换为 protobuff 格式,并尝试使用 TensorFlow 给定的代码进行转换:
当我执行它时,它会运行一段时间,然后出现以下错误:
所以我查了那个文件,它说明了以下内容:
这似乎是正确的,因为我使用的是 5 个维度:[Batch, Sequence, Height, Width, Channels]
谷歌在这个问题上没有给我太多帮助,但也许我使用了错误的搜索词。
那么有什么办法可以避免这个错误,还是 tf-lite 根本不支持序列?
附言。我在给定的 docker 容器中使用 TensorFlow 1.14 和 python3。
gated-recurrent-unit - GRU的图表和方程之间的差异?
当我在阅读 Colah 的博客时,在图中我们可以清楚地看到 z t将变为 ~ h t而不是 r t 但方程式另有说明。这不应该是 z t *h t-1而不是 r t *h t-1。如果我错了,请纠正我。
pytorch - pytorch 中的 torch.nn.gru 函数的输入是什么?
我正在使用 gru 函数来实现 RNN。这个 RNN (GRU) 在一些 CNN 层之后使用。有人可以告诉我这里 GRU 函数的输入是什么吗?特别是,隐藏的大小是固定的吗?
根据我的理解,输入大小将是特征的数量,而 GRU 的隐藏大小总是固定为 128?有人可以纠正我。或提供他们的反馈
python - GRU 中的 W 和 U 表示什么?
我试图弄清楚如何反向传播 GRU 循环网络,但我无法准确理解 GRU 架构。
下图显示了具有 3 个神经网络的 GRU 单元,接收连接的先前隐藏状态和输入向量作为其输入。
然而,这张我用于反向传播的图像显示了输入被转发到每个门的 W 和 U 中,添加,然后应用适当的激活函数。
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
machine-learning - GRU 和 LSTM 哪个更快
我尝试使用 GRU 和 LSTM 在 keras 上实现模型。两种实现的模型架构相同。正如我在许多博客文章中所读到的,与 LSTM 相比,GRU 的推理时间更快。但在我的情况下,GRU 并不快,事实上相对于 LSTMs 比较慢。任何人都可以找到原因。与 Keras 中的 GRU 有什么关系,还是我在任何地方都出错了。
非常感谢您的帮助...
提前致谢
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 家庭版
问题
- 你知道这种行为可能是什么原因吗?
- 这可能是由多个 CUDA 和 CUDnn 安装引起的吗?在观察问题之前,我已经训练了几个模型(来自书本和我自己的模型)并且似乎表现得或多或少符合预期,同时有 2 个 CUDA 和 2 个 CUDnn 版本(上面没有 cudnn-10.0 v7.6.4.38 的那些)安装。
- 是否有任何官方/良好的 keras、tensorflow、CUDA、CUDnn(以及其他相关的东西,例如可能是 Visual Studio)的适当组合的来源?我真的找不到任何权威和最新的来源。
我希望我已经足够清楚地描述了一切。如果您有任何问题,请询问。