Ошибка Tensorflow 1.1: попытка повторно использовать RNNCell с областью действия переменной, отличной от его первого использования
Я пытаюсь запустить пример перевода seq2seq, представленный на веб-сайте Tensorflow, и получаю следующую ошибку. я использую tensorflow-gpu==1.1.0
ValueError: Попытка повторно использовать RNNCell с областью действия переменной, отличной от его первого использования. Первое использование ячейки было с областью действия "embedding_attention_seq2seq/embedding_attention_decoder/ внимания_decoder/gru_cell", эта попытка была с областью действия "embedding_attention_seq2seq/rnn/gru_cell". Пожалуйста, создайте новый экземпляр ячейки, если вы хотите, чтобы он использовал другой набор весов. Если раньше вы использовали: MultiRNNCell([GRUCell(...)] * num_layers), замените его на: MultiRNNCell ([GRUCell (...) для _ в диапазоне (num_layers)]). Если раньше вы использовали один и тот же экземпляр ячейки в качестве прямой и обратной ячеек двунаправленного RNN, просто создайте два экземпляра (один для прямого, другой для обратного). В мае 2017 года мы начнем переводить поведение этой ячейки для использования существующих хранимых весов, если таковые имеются, когда она вызывается с помощью scope=None (что может привести к ухудшению модели без вывода сообщений, поэтому эта ошибка останется до тех пор.)
На 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: Похожий пост был на stackru, но это решение не сработало для меня, и, поскольку версия TF отличается, я создал новый пост.