0

J'ai donc implémenté un modèle de générateur de mots RNN dans un cahier jupytor. Quand je tentais d'utiliser le modèle formé pour générer quelques mots:Génération de mots à partir du modèle RNN entraîné: "Variable existe déjà, non autorisée Voulez-vous définir la réutilisation = True dans VarScope?"

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'])) 

Il fonctionne pour la première fois, mais si je lance à nouveau le code d'erreur:

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

En ce moment Je dois fermer le fichier ipynb puis exécuter le code pour obtenir un nouvel échantillon. Comment changer le code pour éviter cette situation?

Répondre

1

Vous pouvez appeler la fonction model.sample plusieurs fois sans problème, mais tout le reste (création de la session, construction du modèle, chargement du point de contrôle) ne doit être exécuté qu'une seule fois. Si vous refactorisez votre code, vous ne verrez plus ce message d'erreur.