具有大小不等列表的Tensorflow嵌入查找

具有大小不等列表的Tensorflow嵌入查找,tensorflow,categorical-data,embedding-lookup,Tensorflow,Categorical Data,Embedding Lookup,嘿,伙计们, 我正在尝试使用嵌入将多标签分类数据投影到密集空间 这里有一个玩具的例子。假设我有四个类别,并希望将它们投影到二维空间中。此外,我得到了两个实例,第一个属于类别0,第二个属于类别1 代码将如下所示: sess = tf.InteractiveSession() embeddings = tf.Variable(tf.random_uniform([4, 2], -1.0, 1.0)) sess.run(tf.global_variables_initializer()) y = t

嘿,伙计们, 我正在尝试使用嵌入将多标签分类数据投影到密集空间

这里有一个玩具的例子。假设我有四个类别,并希望将它们投影到二维空间中。此外,我得到了两个实例,第一个属于类别0,第二个属于类别1

代码将如下所示:

sess = tf.InteractiveSession()
embeddings =  tf.Variable(tf.random_uniform([4, 2], -1.0, 1.0))
sess.run(tf.global_variables_initializer())
y = tf.nn.embedding_lookup(embeddings, [0,1])
y.eval()
array([[ 0.93999457, -0.83051205],
       [-0.1699729 ,  0.73936272]], dtype=float32)
然后返回如下内容:

sess = tf.InteractiveSession()
embeddings =  tf.Variable(tf.random_uniform([4, 2], -1.0, 1.0))
sess.run(tf.global_variables_initializer())
y = tf.nn.embedding_lookup(embeddings, [0,1])
y.eval()
array([[ 0.93999457, -0.83051205],
       [-0.1699729 ,  0.73936272]], dtype=float32)
到目前为止,一切顺利。现在,假设一个实例属于两个类别。嵌入查找将返回两个向量,我可以通过平均值来减少它们,例如:

y = tf.nn.embedding_lookup(embeddings, [[0,1],[1,2]]) # two categories
y_ = tf.reduce_mean(y, axis=1)
y_.eval()
这就像我期望的一样。我的问题现在出现在批次中的实例不属于相同数量的类别时,例如:

y = tf.nn.embedding_lookup(embeddings, [[0,1],[1,2,3]]) # unequal sized lists
y_ = tf.reduce_mean(y, axis=1)
y_.eval()

ValueError: Argument must be a dense tensor: [[0, 1], [1, 2, 3]] - got shape [2], but wanted [2, 2].

你知道如何解决这个问题吗?

你设法解决了吗?我有完全相同的问题,我想将每个用户建模为过去购买的项目的平均嵌入量,但是每个用户可能购买了不同数量的项目