Wenn ich diesen Code auf einem kleinen Korpus ausführe, erhalte ich einen Schlüsselfehler, da dieser Schlüssel nicht in dict ist und Korpusvokabular auch nicht so groß ist.
sim = similarity.eval()
for i in xrange(valid_size):
valid_word = reverse_dictionary[valid_examples[i]]
print("--",valid_word)
top_k = 5 # number of nearest neighbors
nearest = (-sim[i, :]).argsort()[1:top_k+1]
print(nearest)
log_str = "Nearest to %s:" % valid_word
print(log_str)
for k in xrange(top_k):
close_word = reverse_dictionary[nearest[k]]
Meine Ausgabe ist wie folgt:
Average loss at step 0 : 139.830688477
[[ 0.01613899 -0.06088334 -0.043384 ..., 0.02021606 -0.10094199
0.16063547]
[ 1.00000012 0.10277888 -0.20193034 ..., -0.04780241 0.07802841
0.13258868]
[ 0.09824251 -0.17075592 0.10143445 ..., 0.09903113 -0.08740355
-0.00371696]
...,
[-0.01591019 0.02056946 0.09188825 ..., -0.0506176 0.07684846
0.06354721]
[-0.06749535 0.0028128 -0.09138335 ..., 0.09473826 0.04847325
-0.00853895]
[ 0.01795161 0.01850585 0.04632751 ..., 0.11854959 0.11196665
-0.00684015]]
16
[-0.01613899 0.06088334 0.043384 ..., -0.02021606 0.10094199
-0.16063547]
<type 'numpy.ndarray'>
[ 31 113 118 ..., 650 353 233]
-- using
[113 118 555 298 150]
Nearest to using:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-129-cf006e08ddb8> in <module>()
87 for k in xrange(top_k):
88
---> 89 close_word = reverse_dictionary[nearest[k]]
90 log_str = "%s %s," % (log_str, close_word)
91 print(log_str)
KeyError: 555
vokab_länge = 1155
Batch_Größe = 16
Einbettungsgröße = 128
skip_window = 5
num_skips = 4
gültige_größe = 16
valid_window = 100
valid_examples = np.random.choice(valid_window, valid_size, replace=False)
num_sampled =64
Kann bitte jemand helfen?
Hallo Rahul,
Ich hatte genau das gleiche Problem wie Sie, bis ich die Größe des Arrays "reverse_dictionary" mit "print(len(reverse_dictionary))" überprüft habe, kurz bevor der Fehler auftrat.
Ihre Zeile "vocabulary_size = 50000" sollte niedriger eingestellt werden. Ich habe es auf den Wert gesetzt, der durch das Drucken der Länge von "reverse_dictionary" zurückgegeben wurde, und hatte keine Probleme mehr.
Ich hoffe das hilft.
das hat sehr geholfen!!!!!! @tcheightyeight
Automatisches Schließen aufgrund fehlender Aktivitäten in letzter Zeit. Bitte öffnen Sie wieder, wenn weitere Informationen verfügbar sind.
Hilfreichster Kommentar
Hallo Rahul,
Ich hatte genau das gleiche Problem wie Sie, bis ich die Größe des Arrays "reverse_dictionary" mit "print(len(reverse_dictionary))" überprüft habe, kurz bevor der Fehler auftrat.
Ihre Zeile "vocabulary_size = 50000" sollte niedriger eingestellt werden. Ich habe es auf den Wert gesetzt, der durch das Drucken der Länge von "reverse_dictionary" zurückgegeben wurde, und hatte keine Probleme mehr.
Ich hoffe das hilft.