このコードを小さなコーパスで実行すると、キーがdictになく、コーパスの語彙もそれほど大きくないため、キーエラーが発生します。
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]]
私の出力は次のようになります。
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
vocab_length = 1155
batch_size = 16
embedding_size = 128
skip_window = 5
num_skips = 4
valid_size = 16
valid_window = 100
valid_examples = np.random.choice(valid_window、valid_size、replace = False)
num_sampled = 64
誰か助けてもらえますか?
こんにちはラフル、
エラーが発生する直前に「print(len(reverse_dictionary))」を使用して「reverse_dictionary」配列のサイズを確認するまで、私はあなたとまったく同じ問題を抱えていました。
「vocabulary_size = 50000」の行は、低く設定する必要があります。 「reverse_dictionary」の長さを出力して返される値に設定しましたが、問題はなくなりました。
これがお役に立てば幸いです。
それは大いに役立ちました!!!!!! @tcheightyeight
最近のアクティビティがないため、自動的に閉じます。 詳細がわかり次第、再開してください。
最も参考になるコメント
こんにちはラフル、
エラーが発生する直前に「print(len(reverse_dictionary))」を使用して「reverse_dictionary」配列のサイズを確認するまで、私はあなたとまったく同じ問題を抱えていました。
「vocabulary_size = 50000」の行は、低く設定する必要があります。 「reverse_dictionary」の長さを出力して返される値に設定しましたが、問題はなくなりました。
これがお役に立てば幸いです。