私はワード埋め込みとTensorflowを初めて使用しています。私はword2vecを健康データに適用する必要があるプロジェクトに取り組んでいます。
私はTensorflowウェブサイト(word2vec_basic.py
)のコードを使用しました。私は少し変更され、それは代わりに「text8.zip」の私のデータを読み取り、それが最後のステップまで正常に実行させるために、このコード:このコードをword2vec_basic not working(Tensorflow)
num_steps = 100001
with tf.Session(graph=graph) as session:
# We must initialize all variables before we use them.
tf.initialize_all_variables().run()
print('Initialized')
average_loss = 0
for step in range(num_steps):
batch_data, batch_labels = generate_batch(
batch_size, num_skips, skip_window)
feed_dict = {train_dataset : batch_data, train_labels : batch_labels}
_, l = session.run([optimizer, loss], feed_dict=feed_dict)
average_loss += l
if step % 2000 == 0:
if step > 0:
average_loss = average_loss/2000
# The average loss is an estimate of the loss over the last 2000 batches.
print('Average loss at step %d: %f' % (step, average_loss))
average_loss = 0
# note that this is expensive (~20% slowdown if computed every 500 steps)
if step % 10000 == 0:
sim = similarity.eval()
for i in range(valid_size):
valid_word = reverse_dictionary[valid_examples[i]]
top_k = 8 # number of nearest neighbors
nearest = (-sim[i, :]).argsort()[1:top_k+1]
log = 'Nearest to %s:' % valid_word
for k in range(top_k):
close_word = reverse_dictionary[nearest[k]]
log = '%s %s,' % (log, close_word)
print(log)
final_embeddings = normalized_embeddings.eval()<code>
を例とまったく同じであるので、私は思いません違います。私は、入力データのサイズを変更し
KeyError Traceback (most recent call last)
<ipython-input-20-fc4c5c915fc6> in <module>()
34 for k in xrange(top_k):
35 print(nearest[k])
---> 36 close_word = reverse_dictionary[nearest[k]]
37 log_str = "%s %s," % (log_str, close_word)
38 print(log_str)
KeyError: 2868
が、それはまだ同じエラーを与える:それは与えたエラーです。
誰かがこの問題を解決する方法について私に助言を与えることができたら本当に感謝します。
これは、reverse_dictionaryに2868番目の要素がないことを意味します。最近の[k]は辞書の単語から選ぶべきなので少し奇妙です。あなたのソースコード全体をアップロードしてください。それ以外の場合は、辞書のサイズとvalid_examplesを確認します。 – Jin
ジンに感謝、私はそれが間違っていたが見つかりましたが、まだ解決する方法を知らない。私はウェブサイトの例 "word2vec_basic"とまったく同じように使用しました。しかし、ステップ "text8.zip"では、このファイルのいくつかの行が削除され、元のテキストの長さは2/5になりました。エラーが発生しました。そして、あなたは正しいです、私の辞書は2045要素しか持っていません。スキップダイアグラムモデルの作業の最小長は2868ですか? – ngoduyvu
私はそうは思わない。単語id 2868はあなたの辞書からランダムに選択されています。 それは2045を超えてはいけません。そのため、ソースコード全体をアップロードすることをお勧めします。何かが間違っているはずです。私は推測する。 – Jin