Python Tensorflow,将张量中的索引值与if条件的整数进行比较

Python Tensorflow,将张量中的索引值与if条件的整数进行比较,python,tensorflow,word-embedding,Python,Tensorflow,Word Embedding,我正在使用TensorFlow做一个定制的嵌入训练,类似于连续的单词包CBOW模型。然而,与具有固定长度滑动窗口的“CBOW”不同,我的滑动窗口可以被认为是灵活的。问题是: 比如说,嵌入就是单词嵌入。对于单词t,我有一个表示上下文单词索引的张量:[-1,1,2,-1]。最大窗口大小为4,因此向量的长度为4。但有时我没有一个单词的4个上下文单词,所以我用“-1”表示“这个位置没有单词”,其他整数是单词的索引。我还有一个“嵌入”张量,它是所有单词的嵌入 我试图做的是得到上下文单词的平均嵌入量,以便表

我正在使用TensorFlow做一个定制的嵌入训练,类似于连续的单词包CBOW模型。然而,与具有固定长度滑动窗口的“CBOW”不同,我的滑动窗口可以被认为是灵活的。问题是:

比如说,嵌入就是单词嵌入。对于单词t,我有一个表示上下文单词索引的张量:[-1,1,2,-1]。最大窗口大小为4,因此向量的长度为4。但有时我没有一个单词的4个上下文单词,所以我用“-1”表示“这个位置没有单词”,其他整数是单词的索引。我还有一个“嵌入”张量,它是所有单词的嵌入

我试图做的是得到上下文单词的平均嵌入量,以便表示上下文。例如,如果上下文单词是[-1,1,2,-1],我会得到单词1的1*嵌入+单词2/2的2*嵌入。我只需要忽略所有的-1

因此,在我的代码中,我尝试循环上下文单词张量,将每个值与-1进行比较,并使用if条件来控制是否添加这个上下文单词的嵌入。为此我尝试了不同的方法,但总是得到“TypeError:不允许将tf.Tensor用作Python bool”

有没有办法解决这个问题?或者更好的是,有没有更好的无词位置表示法,这样我就可以更有效地使用NaN进行计算,但也会遇到很多麻烦


非常感谢您的帮助,希望我对这个问题有一个清晰的描述。

我认为了解如何从Tensorflow张量中获取值会有所帮助。看看这个被接受的答案。请记住,Tensorflow可能被视为一种符号语言,因此tf.Tensor是一种符号,它在会话中求值时给出某些值,而不是在定义或与其他操作堆叠时

如果要在图形中进行比较,请使用tensorflow特殊函数进行张量比较,如tf.equal、tf.less等。对于instace,我将张量a的第一个元素与另一个常量张量b进行比较:

# Here is an example of two tensors
a = tf.constant([[1.0, 0.0], [0.0, 1.0], [1.0, 0.0], [0.0, 1.0]])
b = tf.constant(1, dtype=tf.float32)

# generate a tensor representing a result of comparison
c = tf.equal(a[0, 0], b)
# Evaluate the output tensor in a session
print(tf.Session().run(c))
输出为真

此外,您可以尝试提取张量值,如下所示:

# Here is an example of the tensor
a = tf.constant([[1.0, 0.0], [0.0, 1.0], [1.0, 0.0], [0.0, 1.0]])

# Evaluate the tensor in a session
print(tf.Session().run(a))

这里要做的是将tf张量转换成numpy数组,您可以用任何想要的方式处理它

谢谢你的评论!我在发布问题后意识到了这一点。。。但是,在如何处理这个问题上,我仍然需要帮助…我添加了更多的解释,我希望它能帮助Hanks,它能帮助我:但我认为我仍然需要为我的问题寻找其他解决方案;不是通过比较张量的值,而是可以使用NaN或其他方法直接实现此计算。请让我知道如果你有任何更多的意见,我真的很感谢你的帮助!