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.
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. –
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
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! –