Tensorflow Web サイトにある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 のフォワード セルとリバース セルの両方として同じセル インスタンスを使用していた場合は、単純に 2 つのインスタンスを作成します (1 つはフォワード用、もう 1 つはリバース用)。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のバージョンが異なるため、新しい投稿を作成しました。