1

我正在尝试运行 Tensorflow 网站上的seq2seq 翻译示例并出现以下错误。我在用tensorflow-gpu==1.1.0

ValueError:尝试以不同于第一次使用的变量范围重用 RNNCell。第一次使用单元格是在范围“embedding_attention_seq2seq/embedding_attention_decoder/attention_decoder/gru_cell”,这次尝试是在范围“embedding_attention_seq2seq/rnn/gru_cell”。如果您希望它使用一组不同的权重,请创建一个新的单元实例。如果在使用之前:MultiRNNCell([GRUCell(...)] * num_layers),请更改为:MultiRNNCell([GRUCell(...) for _ in range(num_layers)])。如果在您使用相同的单元实例作为双向 RNN 的正向和反向单元之前,只需创建两个实例(一个用于正向,一个用于反向)。2017 年 5 月,我们将开始将此单元格的行为转换为使用现有存储的权重(如果有),

在 github 上,人们建议将reuse参数添加到单元格中,如下所示:

def single_cell():
    return tf.contrib.rnn.GRUCell(size, reuse = tf.get_variable_scope().reuse)
if use_lstm:
    def single_cell():
        return tf.contrib.rnn.BasicLSTMCell(size, reuse = tf.get_variable_scope().reuse)
    cell = single_cell()
if num_layers > 1:
    cell = tf.contrib.rnn.MultiRNNCell([single_cell() for _ in range(num_layers)])

但我仍然遇到同样的错误。有什么问题以及如何解决?非常感谢任何帮助。

PS:stackoverflow 上有一个类似的帖子,但是那个解决方案对我不起作用,并且由于 TF 的版本不同,我创建了一个新帖子。

4

0 回答 0