【发布时间】:2017-01-05 13:31:42
【问题描述】:
我们已经尝试使用tf.nn.embedding_lookup 并且它有效。但它需要密集的输入数据,现在我们需要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 的单元测试之后,我更困惑为什么如果给出稀疏权重我会得到这个结果,尤其是为什么我们得到类似embedding_weights[0][3] 的东西,而上面的代码中没有出现3 .
【问题讨论】:
-
请告诉我我的回答是否解决了您的问题:)
-
谢谢@rvinas。在阅读
safe_embedding_lookup_sparse的单元测试后,我还没有弄清楚。我已经更新了问题,您愿意为我们解释一下代码吗? -
拜托,你能提供原始代码吗?
-
这个源码在TensorFlow的repogithub.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/…
标签: python tensorflow sparse-matrix embedding