2017-10-06 3 views
0

Ich bin neu in TensorFlow, word2vec und neuralen Netzwerken und ich versuche, darüber zu lernen. Ich arbeite an diesem TensorFlow-Tutorial: https://www.tensorflow.org/tutorials/word2vec. Ich habe den Code word2vec_optimized.py für das Tutorial ausgeführt, das Sie hier finden: https://github.com/tensorflow/models/blob/master/tutorials/embedding/word2vec_optimized.py. Wenn der Lernprogramm-Code beendet ist, wird ein gespeichertes TensorFlow-Modell ausgegeben. Ich versuche zu sehen, ob ich das Modell neu laden kann und damit Wortvergleiche anstellen kann, d. H. Frankreich ist mit Paris wie Russland mit Moskau.Wie man ein gespeichertes Modell von TensorFlow word2vec Tutorial lädt und für Wortvergleiche verwendet

ich im Tutorial Code sehen, gibt es eine Analogie Methode, die dafür verwendet werden könnten:

def analogy(self, w0, w1, w2): 
    """Predict word w3 as in w0:w1 vs w2:w3.""" 
    wid = np.array([[self._word2id.get(w, 0) for w in [w0, w1, w2]]]) 
    idx = self._predict(wid) 
    for c in [self._id2word[i] for i in idx[0, :]]: 
     if c not in [w0, w1, w2]: 
     print(c) 
     break 
    print("unknown") 

Aber zuerst, ich brauche das gespeicherte Modell neu zu laden, die ich in meinem Haupt-Methode zu tun:

def main(_): 
    with tf.Graph().as_default(), tf.Session() as session: 
    with tf.device("/cpu:0"): 
     model = tf.train.import_meta_graph('model.ckpt.meta') 
     model.restore(session, tf.train.latest_checkpoint('/results/')) 
     model.analogy(b'france', b'paris', b'russia') 

Dies führt zu dem folgenden Fehler:

Traceback (most recent call last): 
    File "./word2vec_test.py", line 539, in <module> 
    tf.app.run() 
    File "/util/opt/anaconda/2.2/envs/tensorflow-1.0.0/lib/python2.7/site-packages/tensorflow/python/platform/app.py", line 44, in run 
    _sys.exit(main(_sys.argv[:1] + flags_passthrough)) 
    File "./embedding_tutorial/embedding/word2vec_test.py", line 534, in main 
    model.analogy(b'france', b'paris', b'russia') 
AttributeError: 'Saver' object has no attribute 'analogy' 

Wie kann ich die gespeicherten Modul laden und verwenden die Analogie-Methode nennen? Ich stelle meine Hauptmethode in dieselbe Datei wie die Analogie-Methode.

Antwort

0

Ich denke, das Problem ist, dass analogy() eine Methode der Klasse Word2Vec ist, aber Sie nicht die model in diese Art von Objekt instanziieren.

Versuchen Sie folgendes:

opts = Options() 
with tf.Graph().as_default(), tf.Session() as session: 
    with tf.device("/cpu:0"): 
    model = Word2Vec(opts, session) 
    model.saver = tf.train.import_meta_graph('/path/to/model.ckpt.meta') 
    model.saver.restore(session, 
         tf.train.latest_checkpoint('/path/to/results/')) 
    model.analogy(b'france', b'paris', b'russia') 

Oder eigentlich, wenn Sie --interactive verwendet, wenn Sie trainieren, werden Sie in die interactive mode mit ipython betreten nach dem Training durchgeführt wird.

+0

Danke für Ihre Antwort! Ich habe versucht, den Code oben und es kam mit diesem Fehler zurück: 'NotFoundError (siehe oben für Traceback): Key sm_w_t nicht in Kontrollpunkt gefunden [[Knoten: Speicher/RestoreV2_3 = RestoreV2 [dtypes = [DT_FLOAT], _device = "/ Job: localhost/Replik: 0/Aufgabe: 0/cpu: 0"] (_ recv_save/Const_0, speichern/RestoreV2_3/tensor_names, speichern/RestoreV2_3/shape_and_slices)]] ' Der vollständige Fehler ist ziemlich lang, aber Ich kann den Rest des Tracebacks veröffentlichen, wenn es hilfreich wäre. Ich werde auch die --interactive Flagge für das Training versuchen, aber es wird einige Zeit dauern, bis es das Training wieder beenden wird. –

+0

Ich habe das Code-Snippet aktualisiert. Versuch es noch einmal? Um zu sehen, ob das --interactive funktioniert, können Sie --epochs_to_train = 1 (anstelle des Standardwerts von 15) einstellen, um weniger Zeit zu verlieren. – greeness

+0

Ich bin mit dem neuen Code den gleichen Fehler mit: '\t \t NotFoundError (oben für Zurückverfolgungs e): Key sm_w_t nicht in Kontrollpunkt gefunden [[Knoten: Speichern/RestoreV2_3 = RestoreV2 [dtypes = [DT_FLOAT], _device = "/ job: localhost/replik: 0/task: 0/cpu: 0"] (_ recv_save/Const_0, speichern/WiederherstellenV2_3/tensor_namen, speichern/WiederherstellenV2_3/shape_and_slices)]] ' Sollte es mehr als eine Frage geben? Modell im Ergebnisordner? Ich habe das Modell mehr als einmal erstellt. Vielen Dank! –

Verwandte Themen