tf.nn.embedding_lookup
を試してみましたが、動作しています。しかし、それは高密度の入力データを必要とし、現在は疎入力用にtf.nn.embedding_lookup_sparse
が必要です。TensorFlowでtf.nn.embedding_lookup_sparseを使用するには?
次のコードを書いていますが、エラーが発生しました。
import tensorflow as tf
import numpy as np
example1 = tf.SparseTensor(indices=[[4], [7]], values=[1, 1], shape=[10])
example2 = tf.SparseTensor(indices=[[3], [6], [9]], values=[1, 1, 1], shape=[10])
vocabulary_size = 10
embedding_size = 1
var = np.array([0.0, 1.0, 4.0, 9.0, 16.0, 25.0, 36.0, 49.0, 64.0, 81.0])
#embeddings = tf.Variable(tf.ones([vocabulary_size, embedding_size]))
embeddings = tf.Variable(var)
embed = tf.nn.embedding_lookup_sparse(embeddings, example2, None)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
print(sess.run(embed))
エラーログは次のようになります。
今私が正しく、この方法を修正して使用する方法は考えています。どんなコメントもありがとう。 safe_embedding_lookup_sparse
のユニットテストにダイビング後
まばらな重みを与える場合、私はこの結果を得た理由は、私たちは3
は、上記のコードに登場していないembedding_weights[0][3]
のようなものを持って、特に理由は、より混乱しています。
、私の答えはあなたの問題を解決した場合:) – rvinas
ありがとう@rvinasを私に知らせてください。 'safe_embedding_lookup_sparse'の単体テストを読んだあと、私はまだそれを理解しません。私は質問を更新しました。私たちのコードを説明しますか? – tobe
生のコードを教えてください。 – rvinas