0

jupytorノートブックでRNNワードジェネレータモデルを実装しました。 私はいくつかの単語を生成するために訓練されたモデルを使用しようとしていた時:訓練されたRNNモデルから単語を生成する:「変数は既に存在し、許可されていません.VarScopeでreuse = Trueを設定しましたか」

with open(os.path.join(cfgs['save_dir'], 'config.pkl'), 'rb') as f: 
     saved_args = cPickle.load(f) 

    with open(os.path.join(cfgs['save_dir'], 'words_vocab.pkl'), 'rb') as f: 
     words, vocab = cPickle.load(f) 

    with tf.Session() as sess: 
     model = Model(saved_args, True) 
     tf.global_variables_initializer().run() 
     saver = tf.train.Saver(tf.global_variables()) 
     ckpt = tf.train.get_checkpoint_state(cfgs['save_dir']) 
     if ckpt and ckpt.model_checkpoint_path: 
      saver.restore(sess, ckpt.model_checkpoint_path) 
      print(model.sample(sess, words, vocab, cfgs['n'], cfgs['prime'], cfgs['sample'], cfgs['pick'], cfgs['width'])) 

これが初めて動作しますが、私は再びコードを実行する場合は、エラーがあります:

ValueError: Variable rnnlm/softmax_w already exists, disallowed. Did you mean to set reuse=True in VarScope? 

今私はipynbファイルをシャットダウンし、コードを実行して新しいサンプルを取得しなければなりません。 この状況を回避するためにコードを変更するにはどうすればよいですか?

答えて

1

model.sample関数は問題なく複数回呼び出すことができますが、他のすべて(セッションの作成、モデルの構築、チェックポイントの読み込み)は1回だけ実行する必要があります。あなたのコードをリファクタリングすると、エラーメッセージは表示されなくなります。

関連する問題