问题标签 [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 回答
87 浏览

python - 如何在 Keras 中实现 1-sigmoid?

因为我想实现一个类似于 GRU 更新门的结构:

h t = (1-z t )h t-1 + z t h t

我正在尝试用这些代码来实现它,但它不起作用。我确定问题出在以下代码中:

我有以下错误:

AttributeError:“张量”对象没有属性“_keras_history”

我已经尝试过其他一些方法,例如使用Lambda图层,但它不起作用。

0 投票
1 回答
811 浏览

machine-learning - 如何在 Keras 中同时获取 LSTM 或 GRU 的最后输出和完整序列?

在 Keras 中,当使用LSTMor时GRU,如果我设置return_sequences=False了 ,我会得到最后的输出;如果我设置return_sequences=True,我会得到完整的序列;但是如何同时获得它们呢?

0 投票
1 回答
1794 浏览

deep-learning - PyTorch GRU 中隐藏状态的层顺序返回

这是我正在查看的 API,https://pytorch.org/docs/stable/nn.html#gru

它输出:

  1. output形状(seq_len、batch、num_directions * hidden_​​size)
  2. h_n形状(num_layers * num_directions,batch,hidden_​​size)

对于具有多个层的 GRU,我想知道如何获取最后一层的隐藏状态,应该是h_n[0]还是h_n[-1]

如果是双向的,如何进行切片以获取 GRU 在两个方向上的最后一个隐藏层状态?

0 投票
1 回答
3253 浏览

python - 如何设置 keras.layers.RNN 实例的初始状态?

我使用以下循环创建了一个堆叠的 keras 解码器模型:

当我有一个神经元数量相同的单层编码器和一个单层解码器时,此设置有效。但是,当解码器的层数超过一层时,它就不起作用了。

我收到以下错误消息:

我的 decoder_layers 列表包含条目 [48, 58]。因此,构成解码器的 RNN 层是一个堆叠的 GRU,其中第一个 GRU 包含 48 个神经元,第二个包含 58 个神经元。我想设置第一个 GRU 的初始状态。我通过密集层运行状态,以便形状与解码器的第一层兼容。错误消息表明,当我将初始状态关键字传递给解码器 RNN 层时,我正在尝试设置第一层和第二层的初始状态。这是正确的行为吗?通常我会设置第一个解码器层的初始状态(不是使用这样的单元结构构建的),然后将其输入馈送到后续层。有没有办法在创建 keras.layers 时默认在 keras 中实现这种行为。

0 投票
2 回答
489 浏览

python - GRU 语言模型未正确训练

我尝试使用 GRU 和线性层重新实现一个简单的 GRU 语言模型(完整代码也在https://www.kaggle.com/alvations/gru-language-model-not-training-properly):

和训练程序:

但是当模型进行预测时,我们看到它只是预测“the”和逗号“,”。

有人发现我的代码有问题吗?还是超参数?

完整代码:

0 投票
1 回答
1540 浏览

keras - 了解 GRU 架构 - Keras

我正在使用 Mycroft AI 唤醒词检测,并试图了解网络的维度。以下几行显示了 Keras 中的模型:

我的特征大小为 29*13。GRU 层有 20 个单元。我现在的问题是,我的模型如何在 GRU 层中有 2040 个可学习参数?单元是如何连接的?也许我对 GRU 网络的整体理解是错误的,但我只能找到单个单元格的解释,而找不到完整网络的解释。GRU 网络是否全连接?谢谢你!

网络架构

0 投票
0 回答
644 浏览

tensorflow - LSTM/GRU 和重叠滑动窗口的使用

语境

我目前正在Keras中使用 LSTM / GRU 进行一些实验。无论如何,以下问题也与这些网络的一般功能有关,这意味着答案不必是特定于 Keras 的

对于我的实验,我选择以 a 的形式预测一个线性增长的时间序列,range(10,105,5)这样我显然会得到很好的结果。我的数据生成器遵循教程(只是 Keras 的一个实现TimeSeriesGenerator)。

这导致8 steps_per_epoch和 的样本shape (8, 1, 2, 2)。然后我在 Keras 中建立了一个简单的网络,并对其进行了训练500 epochs

如果我之后像这样预测一些数据......

...结果/预测是[[111.1233 116.97075]](对于实验来说足够好->正确的是[[110.0 115.0]])。



我的问题

显然 500 个 epoch 远远超过了这一数据量的需要。

为了在不增加实际数据的情况下获得更多的训练数据(在实际场景中这也是不可能的),我想出了使用重叠滑动窗口的想法(上面显示的批次是不重叠的)。

然后批次看起来像这样:

从理论上讲,这对我来说意味着更多的批次,我认为培训质量会相应提高。

无论如何,将这些数据提供给相同的网络会导致以下预测:[[121.1334 134.70979]]. 嗯..这些是更糟糕的预测结果。

我现在的问题是:

  1. 这是 LSTM / GRU 的预期行为吗?为什么重叠窗口对他们来说是个问题?
  2. 有没有办法在不破坏预测质量的情况下以这种方式增加我的数据?
0 投票
0 回答
126 浏览

tensorflow - 带有 fit_generator() 的有状态循环神经网络

语境

我阅读了一些关于在 Keras 中实现有状态循环神经网络的博客(例如这里这里)。
在 stackoverflow 上还有几个关于有状态 RNN 的问题,这个问题与我的很接近。

链接的教程使用fit()- 方法代替fit_generator()并通过手动迭代 epoch 来传递状态,epochs=1fit()本示例中取自此处的示例:


我的问题

我想使用fit_generator()而不是fit(),但也使用无状态 LSTM/GRU 层。我在上面链接的其他stackoverflow问题中缺少的是:

  1. 我可以像示例中那样在每次迭代中设置时以与 with 相同的方式进行操作fit(),即设置epochs=1,并对其进行 x 次 迭代吗?model.reset_states()
  2. 还是仅在使用fit_generator()完成后才重置状态(什么会很棒)?batch_sizestateful=True
  3. 还是fit_generator()在每个批次之后重置状态(会有什么问题)?

后一个问题在这里特别涉及这种陈述形式:

无状态:在无状态 LSTM 配置中,内部状态在每个训练批次或每个批次进行预测时重置。
Stateful:在有状态的 LSTM 配置中,只有在调用 reset_state() 函数时才会重置内部状态。

0 投票
0 回答
259 浏览

tensorflow - 如何在急切执行模式下冻结 tf.keras 框架内的张量流变量?

我正在尝试微调循环单元中的输入权重,而不让反向传播影响先前的状态(一种截断的反向传播,n = 1)。我在 tensorflow 中使用 tf.keras 和渴望执行。

我找不到冻结 GRU 单元特定部分的方法。特别是循环内核。似乎循环内核是一个张量流变量,因此,我找不到将可训练属性设置为 False 的方法。

我的代码基于这个关于 text_generation 的教程(谷歌 colab 版本,您可以在其中修改build_model函数并对其进行测试)

当调用此函数时:

我得到:

0 投票
1 回答
1904 浏览

keras - keras中的堆叠GRU模型

我愿意创建一个 3 层的 GRU 模型,每层分别有 32、16、8 个单元。该模型将模拟量作为输入并产生模拟值作为输出。

我写了以下代码:

而且,我将此函数称为:

而且,我获得了以下信息:

我在网上试过,但没有找到任何解决“ndim”相关问题的方法。

请让我知道我在这里做错了什么。