3

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

cell = GRUCell(num_neurons)  # Or LSTMCell(num_neurons)
cell = DropoutWrapper(cell, output_keep_prob=dropout)
cell = MultiRNNCell([cell] * num_layers)

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

4

1 回答 1

2

我假设你已经很好地理解了 TensorFlow 的概念和执行模型。如果没有,请查看 tensorflow.org 上的教程,尤其是变量一。

GRUCell 的构造函数不会向 Graph 添加任何节点。只有当您调用实例(即 cell())时,变量和操作才会被添加到图中。当 MultiRNNCell 被调用时,它将在调用子层之前创建不同的变量范围。这样每一层都有自己的变量。

于 2016-12-26T03:45:50.377 回答