问题标签 [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.
python - 如何在 Keras 中实现 1-sigmoid?
因为我想实现一个类似于 GRU 更新门的结构:
h t = (1-z t )h t-1 + z t h t
我正在尝试用这些代码来实现它,但它不起作用。我确定问题出在以下代码中:
我有以下错误:
AttributeError:“张量”对象没有属性“_keras_history”
我已经尝试过其他一些方法,例如使用Lambda
图层,但它不起作用。
machine-learning - 如何在 Keras 中同时获取 LSTM 或 GRU 的最后输出和完整序列?
在 Keras 中,当使用LSTM
or时GRU
,如果我设置return_sequences=False
了 ,我会得到最后的输出;如果我设置return_sequences=True
,我会得到完整的序列;但是如何同时获得它们呢?
deep-learning - PyTorch GRU 中隐藏状态的层顺序返回
这是我正在查看的 API,https://pytorch.org/docs/stable/nn.html#gru
它输出:
output
形状(seq_len、batch、num_directions * hidden_size)h_n
形状(num_layers * num_directions,batch,hidden_size)
对于具有多个层的 GRU,我想知道如何获取最后一层的隐藏状态,应该是h_n[0]
还是h_n[-1]
?
如果是双向的,如何进行切片以获取 GRU 在两个方向上的最后一个隐藏层状态?
python - 如何设置 keras.layers.RNN 实例的初始状态?
我使用以下循环创建了一个堆叠的 keras 解码器模型:
当我有一个神经元数量相同的单层编码器和一个单层解码器时,此设置有效。但是,当解码器的层数超过一层时,它就不起作用了。
我收到以下错误消息:
我的 decoder_layers 列表包含条目 [48, 58]。因此,构成解码器的 RNN 层是一个堆叠的 GRU,其中第一个 GRU 包含 48 个神经元,第二个包含 58 个神经元。我想设置第一个 GRU 的初始状态。我通过密集层运行状态,以便形状与解码器的第一层兼容。错误消息表明,当我将初始状态关键字传递给解码器 RNN 层时,我正在尝试设置第一层和第二层的初始状态。这是正确的行为吗?通常我会设置第一个解码器层的初始状态(不是使用这样的单元结构构建的),然后将其输入馈送到后续层。有没有办法在创建 keras.layers 时默认在 keras 中实现这种行为。
python - GRU 语言模型未正确训练
我尝试使用 GRU 和线性层重新实现一个简单的 GRU 语言模型(完整代码也在https://www.kaggle.com/alvations/gru-language-model-not-training-properly):
和训练程序:
但是当模型进行预测时,我们看到它只是预测“the”和逗号“,”。
有人发现我的代码有问题吗?还是超参数?
完整代码:
keras - 了解 GRU 架构 - Keras
我正在使用 Mycroft AI 唤醒词检测,并试图了解网络的维度。以下几行显示了 Keras 中的模型:
我的特征大小为 29*13。GRU 层有 20 个单元。我现在的问题是,我的模型如何在 GRU 层中有 2040 个可学习参数?单元是如何连接的?也许我对 GRU 网络的整体理解是错误的,但我只能找到单个单元格的解释,而找不到完整网络的解释。GRU 网络是否全连接?谢谢你!
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]]
. 嗯..这些是更糟糕的预测结果。
我现在的问题是:
- 这是 LSTM / GRU 的预期行为吗?为什么重叠窗口对他们来说是个问题?
- 有没有办法在不破坏预测质量的情况下以这种方式增加我的数据?
tensorflow - 带有 fit_generator() 的有状态循环神经网络
语境
我阅读了一些关于在 Keras 中实现有状态循环神经网络的博客(例如这里和这里)。
在 stackoverflow 上还有几个关于有状态 RNN 的问题,这个问题与我的很接近。
链接的教程使用fit()
- 方法代替fit_generator()
并通过手动迭代 epoch 来传递状态,epochs=1
如fit()
本示例中取自此处的示例:
我的问题
我想使用fit_generator()
而不是fit()
,但也使用无状态 LSTM/GRU 层。我在上面链接的其他stackoverflow问题中缺少的是:
- 我可以像示例中那样在每次迭代中设置时以与 with 相同的方式进行操作
fit()
,即设置epochs=1
,并对其进行 x 次 迭代吗?model.reset_states()
- 还是仅在使用
fit_generator()
完成后才重置状态(什么会很棒)?batch_size
stateful=True
- 还是
fit_generator()
在每个批次之后重置状态(会有什么问题)?
后一个问题在这里特别涉及这种陈述形式:
无状态:在无状态 LSTM 配置中,内部状态在每个训练批次或每个批次进行预测时重置。
Stateful:在有状态的 LSTM 配置中,只有在调用 reset_state() 函数时才会重置内部状态。
tensorflow - 如何在急切执行模式下冻结 tf.keras 框架内的张量流变量?
我正在尝试微调循环单元中的输入权重,而不让反向传播影响先前的状态(一种截断的反向传播,n = 1)。我在 tensorflow 中使用 tf.keras 和渴望执行。
我找不到冻结 GRU 单元特定部分的方法。特别是循环内核。似乎循环内核是一个张量流变量,因此,我找不到将可训练属性设置为 False 的方法。
我的代码基于这个关于 text_generation 的教程(谷歌 colab 版本,您可以在其中修改build_model
函数并对其进行测试)
当调用此函数时:
我得到:
keras - keras中的堆叠GRU模型
我愿意创建一个 3 层的 GRU 模型,每层分别有 32、16、8 个单元。该模型将模拟量作为输入并产生模拟值作为输出。
我写了以下代码:
而且,我将此函数称为:
而且,我获得了以下信息:
我在网上试过,但没有找到任何解决“ndim”相关问题的方法。
请让我知道我在这里做错了什么。