问题标签 [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 - 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 的糟糕表现?
python - 在 Tensorflow 中混合前馈层和循环层?
有没有人能够在 Tensorflow 中混合前馈层和循环层?
例如:输入->conv->GRU->线性->输出
我可以想象一个人可以定义他自己的带有前馈层的单元格,并且没有可以使用 MultiRNNCell 函数堆叠的状态,例如:
细胞 = tf.nn.rnn_cell.MultiRNNCell([conv_cell,GRU_cell,linear_cell])
这将使生活变得更加轻松......
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 单元中获取激活吗?谢谢。
python - tensorflow(python)的GRUCell中输入和隐藏状态的大小应该是多少?
我是 tensorflow 的新手(1 天的经验)。
我正在尝试按照小代码创建一个基于 GRU 的简单 RNN,其单层和隐藏大小为 100,如下所示:
但我在最后一行收到以下错误(即调用cell()
)
我究竟做错了什么?
python - 如何完成以下用 tensorflow 编写的基于 GRU 的 RNN?
到目前为止,我已经编写了以下代码:
但是我收到了 softmax_w/b
作为未初始化变量的错误。
我不知道我应该如何使用这些W
并b
进行火车运行。
如下所示:
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 对其进行训练,但错误太高而且根本没有减少。
我想听听关于这个问题的任何建议。我对任何事情都持开放态度。
PS:我使用 2 个 gru 层,每个层有 256 或 512 个单元。
python - 在张量流中,如何迭代存储在张量中的输入序列?
我正在尝试使用 RNN 解决可变长度多元序列分类问题。
我已经定义了以下函数来获取序列的输出(即在序列的最终输入被馈入后RNN单元的输出)
这x_sequence
是形状的张量在(?, ?, 10)
哪里?是批量大小和第二个?用于序列长度,每个输入元素的长度为 10。gru
函数采用先前的隐藏状态和当前输入并吐出下一个隐藏状态(标准门控循环单元)。
我收到一个错误:'Tensor' object is not iterable.
如何按顺序迭代张量(一次读取单个元素)?
我的目标是为gru
序列中的每个输入应用函数并获得最终的隐藏状态。
neural-network - Tensorflow 中 GRU 单元的解释?
以下 TensorflowGRUCell
单元的代码显示了获取更新隐藏状态的典型操作,当先前的隐藏状态与序列中的当前输入一起提供时。
但我没有看到任何weights
和biases
这里。例如,我的理解是,获得r
并且u
需要将权重和偏差与当前输入和/或隐藏状态相乘才能获得更新的隐藏状态。
我写了一个gru单元如下:
在这里,我明确利用 weightsWx, Wr, Wz, Wh
和 biasesbr, bh, bz
等来获取更新的隐藏状态。这些权重和偏差是训练后学习/调整的。
如何利用 Tensorflow 的内置功能GRUCell
来实现与上述相同的结果?
initialization - GRU 单元的 Xavier 初始化
试图初始化我的 seq2seq-model。我正在使用 GRU 单元,但无法弄清楚 Xavier-Initialization。rnn_cell.py 中的代码似乎不允许这样做。有任何想法吗?需要手动执行此操作吗?
谢谢
tensorflow - TensorFlow 双向 GRU 返回 ValueError 因为形状不正确
我正在使用 TensorFlow 0.9 版实现双向标记 GRU 网络(前一层,后一层)。在模型初始化时,TensorFlow 会初始化所有变量,创建 GRU 单元并正确应用所有常规转换,直到运行该tf.nn.bidirectional_rnn
函数,它会抛出与形状不正确的张量合并操作相关的 ValueError。这是代码:
当我运行它时,我收到以下错误:
现在,函数的输入bidirectional_rnn
是:
self.char_gru_cell_fw
char_hidden_size
:这是一个 GRUCell 实例,在这种情况下用整数值 50 初始化
self.char_gru_cell_bw
char_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 是如何工作的,没有任何问题。这让我觉得在低级方法之前,rnn
orrnn_cell
库中出现了我以前没有使用过的问题。
这似乎也很奇怪,因为错误与空形状有关(与我假设的标量而不是张量相关联),但我唯一能够更改的是bidirectional_rnn
函数参数中的标量是sequence_length
参数。我尝试忽略它并仅使用初始状态,反之亦然,但会弹出相同的错误。
有没有人有类似的问题?我的整个系统都因此而瘫痪,希望得到一些反馈。提前致谢