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

python - Theano 中的 GRU 实现

根据官方 Theano 教程 ( http://deeplearning.net/tutorial/code/lstm.py ) 中提供的 LSTM 代码,我更改了 LSTM 层代码(即函数lstm_layer()param_init_lstm())以执行 GRU。

提供的 LSTM 代码训练得很好,但不是我编码的 GRU:使用 LSTM 的训练集的准确度上升到 1(训练成本 = 0),而使用 GRU 时它停滞在 0.7(训练成本 = 0.3)。

下面是我用于 GRU 的代码。我保留了与教程中相同的函数名称,以便可以直接将代码复制粘贴到其中。什么可以解释 GRU 的糟糕表现?

0 投票
3 回答
1341 浏览

python - 在 Tensorflow 中混合前馈层和循环层?

有没有人能够在 Tensorflow 中混合前馈层和循环层?

例如:输入->conv->GRU->线性->输出

我可以想象一个人可以定义他自己的带有前馈层的单元格,并且没有可以使用 MultiRNNCell 函数堆叠的状态,例如:

细胞 = tf.nn.rnn_cell.MultiRNNCell([conv_cell,GRU_cell,linear_cell])

这将使生活变得更加轻松......

0 投票
1 回答
313 浏览

python - 获取具有可变序列长度的激活时,Tensorflow GRU 单元错误

我想在一些时间序列数据上运行一个 GRU 单元,以根据最后一层中的激活对它们进行聚类。我对 GRU 单元的实现做了一个小改动

在此之后,我以以下方式连接激活,然后在调用此 GRU 单元的脚本中返回它们

我以下列方式调用 GRU 单元

其中s是一个批处理长度数组,其中包含输入批处理的每个元素中的时间戳数。

最后我使用

执行时出现以下错误

Traceback(最近一次调用):文件“xxx.py”,第 162 行,在 fetched = sess.run(fetches=cell.activations, feed_dict=feed_dict) 文件“/xxx/local/lib/python2.7/site- packages/tensorflow/python/client/session.py”,第 315 行,运行中返回 self._run(None, fetches, feed_dict) 文件“/xxx/local/lib/python2.7/site-packages/tensorflow/python/ client/session.py",第 511 行,在 _run feed_dict_string) 文件 "/xxx/local/lib/python2.7/site-packages/tensorflow/python/client/session.py",第 564 行,在 _do_run target_list) 文件“/xxx/local/lib/python2.7/site-packages/tensorflow/python/client/session.py”,第 588 行,在 _do_call 六.reraise(e_type, e_value, e_traceback) 文件中“/xxx/local/lib /python2.7/site-packages/tensorflow/python/client/session.py”,第 571 行,在 _do_call 返回 fn(*args) 文件“/xxx/local/lib/python2.7/site-packages/tensorflow/python/client/session.py”,第 555 行,在 _run_fn

return tf_session.TF_Run(session, feed_dict, fetch_list, target_list) tensorflow.python.pywrap_tensorflow.StatusNotOK: Invalid argument: 为 RNN/cond_396/ClusterableGRUCell/flatten_activations:0 返回的张量无效。

有人可以深入了解如何在最后一步通过可变长度序列从 GRU 单元中获取激活吗?谢谢。

0 投票
1 回答
1858 浏览

python - tensorflow(python)的GRUCell中输入和隐藏状态的大小应该是多少?

我是 tensorflow 的新手(1 天的经验)。

我正在尝试按照小代码创建一个基于 GRU 的简单 RNN,其单层和隐藏大小为 100,如下所示:

但我在最后一行收到以下错误(即调用cell()

我究竟做错了什么?

0 投票
1 回答
545 浏览

python - 如何完成以下用 tensorflow 编写的基于 GRU 的 RNN?

到目前为止,我已经编写了以下代码:

但是我收到了 softmax_w/b作为未初始化变量的错误。

我不知道我应该如何使用这些Wb进行火车运行。

如下所示:

0 投票
0 回答
74 浏览

machine-learning - 如何训练值之间差异很大的数据

我目前正在研究用于文本到语音的循环神经网络,但我被困在某一点上。

我有一些输入文件,它们具有尺寸为 490 的文本(音素等)的特征。输出文件是 mgc(60-d)、bap(25-d) 和 lf0(1-d)。mgc 和 bap 文件没问题,因为值之间没有大的差距。我可以以合理的时间和准确性训练他们。输入和输出是顺序的并且正确对齐,例如如果输入的形状是 (300, 490),那么 mgc、bap 和 lf0 的形状是 (300, 60)、(300, 25) 和 (300, 1),分别。

我的问题是lf0(我想是基频的对数)。这些值例如 [0.23, 1.2, 0.54, 3.4, -10e9, -10e9, -10e9, 3.2, 0.25]。我尝试使用 MSE 对其进行训练,但错误太高而且根本没有减少。

lf0 的情节

我想听听关于这个问题的任何建议。我对任何事情都持开放态度。

PS:我使用 2 个 gru 层,每个层有 256 或 512 个单元。

0 投票
2 回答
11907 浏览

python - 在张量流中,如何迭代存储在张量中的输入序列?

我正在尝试使用 RNN 解决可变长度多元序列分类问题。

我已经定义了以下函数来获取序列的输出(即在序列的最终输入被馈入后RNN单元的输出)

x_sequence是形状的张量在(?, ?, 10)哪里?是批量大小和第二个?用于序列长度,每个输入元素的长度为 10。gru函数采用先前的隐藏状态和当前输入并吐出下一个隐藏状态(标准门控循环单元)。

我收到一个错误:'Tensor' object is not iterable. 如何按顺序迭代张量(一次读取单个元素)?

我的目标是为gru序列中的每个输入应用函数并获得最终的隐藏状态。

0 投票
1 回答
3578 浏览

neural-network - Tensorflow 中 GRU 单元的解释?

以下 TensorflowGRUCell单元的代码显示了获取更新隐藏状态的典型操作,当先前的隐藏状态与序列中的当前输入一起提供时。

但我没有看到任何weightsbiases这里。例如,我的理解是,获得r并且u需要将权重和偏差与当前输入和/或隐藏状态相乘才能获得更新的隐藏状态。

我写了一个gru单元如下:

在这里,我明确利用 weightsWx, Wr, Wz, Wh和 biasesbr, bh, bz等来获取更新的隐藏状态。这些权重和偏差是训练后学习/调整的。

如何利用 Tensorflow 的内置功能GRUCell来实现与上述相同的结果?

0 投票
1 回答
2192 浏览

initialization - GRU 单元的 Xavier 初始化

试图初始化我的 seq2seq-model。我正在使用 GRU 单元,但无法弄清楚 Xavier-Initialization。rnn_cell.py 中的代码似乎不允许这样做。有任何想法吗?需要手动执行此操作吗?

谢谢

0 投票
1 回答
1074 浏览

tensorflow - TensorFlow 双向 GRU 返回 ValueError 因为形状不正确

我正在使用 TensorFlow 0.9 版实现双向标记 GRU 网络(前一层,后一层)。在模型初始化时,TensorFlow 会初始化所有变量,创建 GRU 单元并正确应用所有常规转换,直到运行该tf.nn.bidirectional_rnn函数,它会抛出与形状不正确的张量合并操作相关的 ValueError。这是代码:

当我运行它时,我收到以下错误:

现在,函数的输入bidirectional_rnn是:

self.char_gru_cell_fwchar_hidden_size:这是一个 GRUCell 实例,在这种情况下用整数值 50 初始化

self.char_gru_cell_bwchar_hidden_size:这是一个 GRUCell 实例,在这种情况下用整数值 50 初始化

chargruinput:这是一个长度为 30 的列表,包含形状为 [ batch_size, charvocab] 的张量,在本例中为 [32,256]

sequence_length: 一个整数,表示展开单元格的数量,char_num_steps在本例中为 30。

initial_state_fw: 一个与 GRU 状态相同形状的零填充张量,在本例中为 [32,50]

initial_state_bw: 一个与 GRU 状态相同形状的零填充张量,在本例中为 [32,50]

我尝试查看导致抛出 ValueError 异常的模块,但是有很多低级的东西很可能工作正常,看看我上周工作的 CNN 是如何工作的,没有任何问题。这让我觉得在低级方法之前,rnnorrnn_cell库中出现了我以前没有使用过的问题。

这似乎也很奇怪,因为错误与空形状有关(与我假设的标量而不是张量相关联),但我唯一能够更改的是bidirectional_rnn函数参数中的标量是sequence_length参数。我尝试忽略它并仅使用初始状态,反之亦然,但会弹出相同的错误。

有没有人有类似的问题?我的整个系统都因此而瘫痪,希望得到一些反馈。提前致谢