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

tensorflow - 在 tensorflow 中创建多层循环神经网络

我正在尝试在 tensorflow 中创建一个带有 GRU 单元(以及 LSTM 单元)的多层循环神经网络。我查看了多个来源,包括官方教程。但我一直看到多层 RNN 的以下模式(此处显示为 GRU 单元)。

此代码片段取自RNN Tensorflow Introduction。我的理解[cell] * num_layers是同一个对象在列表中cell被引用num_layer次数。因此,不会MultiRNNCell创建一个深层网络,其中每一层的权重都与前一层相同。如果有人可以澄清这里到底发生了什么,那将是非常有见地的。

0 投票
1 回答
1246 浏览

tensorflow - TensorFlow RNN 输入大小

我正在尝试使用 tensorflow 创建循环神经网络。我的代码是这样的:

现在,一切运行良好。但是,我对实际发生的事情感到困惑。输出维度始终是批大小 x rnn 单元隐藏状态的大小 - 它们如何完全独立于输入大小?

如果我的理解是正确的,输入会在每一步连接到 rnn 的隐藏状态,然后乘以权重矩阵(以及其他操作)。这意味着权重矩阵的维度需要依赖于输入大小,这是不可能的,因为 rnn_cell 是在输入声明之前创建的!

0 投票
0 回答
106 浏览

machine-learning - 使用 Keras 的 GRU 进行情感分析的时间步长问题

我会尽量清楚地解释我的问题。

所以,我正在尝试使用 GRU 学习评论的产品信息。我有大约一百万条评论,所有评论都转换为 300 维向量。这些评论向量按其各自的产品分组。现在,我有一个包含所有数百万评论的训练集,其中属于同一产品的评论将一个接一个。

下面是我的 GRU 模型

该 GRU 有望捕获产品信息,例如最有可能获得正面评价的特定产品,反之亦然。但是在使用以下代码检索所有唯一产品的 128 维输出向量后:

其中 X_predict 是唯一产品的 300 维向量,当我将其连接到其原始向量并使用 SVM 进行分类时,我没有得到任何准确性提高。

在这里,时间步长是 1。这是问题所在吗?如果是这样,如何解决这个问题

0 投票
1 回答
13849 浏览

tensorflow - ValueError:两个结构的元素数量不同

这是我用于输入尺寸为 100x196x50 的 GRU 代码,它应该沿第二维(即 196)解包。hidden_state_size是 50,batch_size是 100。但是我收到以下错误:

任何线索如何解决这个问题?

0 投票
1 回答
1095 浏览

tensorflow - TensorFlow Serving - 有状态的 LSTM

是否有规范的方法来使用 Tensorflow Serving 维护有状态的 LSTM 等?

直接使用 Tensorflow API 这很简单——但我不确定在将模型导出到 Serving 之后如何最好地完成调用之间的持久 LSTM 状态。

有没有实现上述目标的例子?回购中的样本非常基础。

0 投票
1 回答
1027 浏览

tensorflow - Tensorflow/LSTM 机制:如何指定 LSTM 单元的第一个时间步的先前输出

刚开始使用 TensorFlow 构建用于多类分类的 LSTM 网络

给定如下所示的结构:RNN 模型 假设每个节点 A 代表 TensorFlow BasicLSTMcell。

根据网上找到的一些流行的例子,训练的输入准备为[batch_size, timeStep_size, feature_size]

假设 timeStep_size = 5,feature_size = 2,num_class = 4,给定一个训练集:(虚拟数据)

根据流行的用法:

在我看来,LSTM 单元的训练并没有利用 y 的所有五个输出(y 在 t0 - t3)。与 output[-1] 相比,只有时间 t4 的 y 用于计算损失。

问题1:是不是LSTM自己计算/逼近y_t0,然后输入t1来计算y_t1,依此类推……直到计算出y_t4?

如果是这种情况,

问题 2:如果 t-1 时的 y 非常重要怎么办?

例子:

对比:

这意味着即使从 t0 到 t4 的输入特征相同,但输出 y 是不同的,因为之前的输出 (y_t-1) 是不同的。

那么如何处理这种情况呢?在计算 t0 的输出时,TensorFlow 如何设置 t-1 的输出?

我想过增加timeStep_Size,但实际情况可能非常大,所以我有点困惑......

任何指针都非常感谢!

先感谢您。

=================更新===============================

回复:jdehesa,再次感谢。

一些额外的背景:我的意图是对一长串x进行分类,如下所示:

这篇文章背后的主要困惑是手动分类有一些已知的规则。以上面的虚拟数据为例,假设有规则

  1. 如果前面的特征 x 是第 3 类 ([3, 3]),那么所有后面的 [2, 2] 都将是第 2 类,直到它到达第 1 类。

  2. 如果前面的 x 是 1 类 ([1, 1]),那么所有后面的 [2, 2] 都将是 4 类,直到它达到 3 类。

在这种情况下,如果 LSTM 只看到与 t1 到 t4 相同的 [5 by 2] 特征向量 (x),则网络将完全迷失在分类为 2 类或 4 类。所以我的意思是,不仅那些5 个时间步的特征很重要,前一个时间步的输出/标签也很重要。

所以重申这个问题:如果现在训练集是 t1 到 t5,那么除了 x [batch_size, t1:t5, 2] 之外,如何在 t0 处也包含标签/类 y。

以下是我对您的回答的回复。

考虑我使用 GRU 而不是 LSTM,其中单元输出和单元状态都由“h”表示,如在理解 LSTM中一样。

  1. 关于 initial_state 参数:我刚刚发现 dynamic_rnn 和 static_rnn 正如您指出的那样采用此参数:D。如果我要解决刚才提到的问题,我可以在训练之前使用将之前的类/标签(t0 时的 y)分配给 initial_state 参数,而不是使用 zeros_state。

  2. 我突然觉得我完全迷失了 LSTM 记忆的时间跨度。我一直认为内存的时间跨度仅受 timeStep_size 的限制。如果 timeStep_size = 5,网络最多只能召回 4 步,因为每次训练我们只提供 x 特征向量的 [5 x 2]。如果我错了,请纠正我。

再次,谢谢你

0 投票
1 回答
3871 浏览

deep-learning - 什么是读出和教师强迫的原则?

这些天我研究了一些关于 RNN 和教师强迫的东西。但是有一点我想不通。什么是读出和教师强迫的原则?我们如何将 RNN 从上一个时间步的输出(或基本事实)反馈到当前时间步,通过将输出与这一步的输入一起使用作为特征,或者将输出作为这一步的单元状态?我读过一些论文,但仍然让我感到困惑。o(╯□╰)o。希望有人能帮我解答。</p>

0 投票
1 回答
7798 浏览

tensorflow - 如何提高 LSTM、GRU 递归神经网络的分类精度

Tensorflow 中的二元分类问题:

我浏览了在线教程并尝试使用门控循环单元 (GRU) 将其应用于实时问题。我已经尝试了所有我知道的改进分类的可能性。

1) 开始添加堆叠 RNN(GRU) 层 2) 增加每个 RNN 层的隐藏单元 3) 为隐藏层添加“sigmoid”和“RelU”激活函数 4) 标准化输入数据 5) 更改超参数

请找到数据集的链接: https ://github.com/madhurilalitha/Myfirstproject/blob/master/ApplicationLayerTrainingData1.txt

如果您可以浏览数据集,则它具有“正常”和“非正常”标签。我将“正常”编码为“1 0”,将异常编码为“0 1”。我还将数据集更改为以下形状的 3D:

新列车 X 的形状 (7995, 5, 40) 新列车 Y 的形状 (7995, 2) 新测试 X 的形状 (1994, 5, 40) 新测试 Y 的形状 (1994, 2)

我不太确定我在哪里遗漏了逻辑,有人可以帮我找出代码中的错误吗?

测试数据的分类准确率为52.3%。即使在训练数据上,它也能以相同的精度执行。请在下面找到代码:

0 投票
1 回答
405 浏览

deep-learning - DeepLearning4J 中的 GRU

我试图在 DeepLearning4J 中找到 GRU 实现,但似乎找不到。有谁知道 GRU 是否在 DL4J 中实现?如果是这样,请您指导我举一个例子。如果没有,这是否在他们的路线图上?

谢谢

0 投票
0 回答
615 浏览

tensorflow - Tensorflow 堆叠 GRU 单元

我正在尝试在 tensorflow 中使用 MultiRNNCell 和 GRUCell 实现堆叠 RNN。

从GRUCell的默认实现可以看出,GRUCell的“输出”和“状态”是一样的:

这是有道理的,因为它与定义一致。但是,当我们将它们与 MultiRNNCell 堆叠时,定义为:

(代码已被压缩以突出显示相关位)

在这种情况下,任何不是第一个 GRUCell 的 GRUCell 都会收到相同的“输入”和“状态”值。本质上,它在单个输入上运行,即前一层的输出。

由于重置/更新门的值取决于两个输入值(输入/状态)的比较,这最终不会成为冗余操作,最终会直接从第一层传递值吗?

MultiRNNCell 的这种架构似乎主要是在设计时考虑了 LSTM 单元,因为它们将输出和单元状态分开,但不适用于 GRU 单元。