Python 使用tf.equal比较两个长度不等的张量?
我有两个张量,A和B(都是一阶向量)。B是a的一个子集。我想知道B在a中的位置,也就是说,对于a的每个元素,是a{I}在B中。我尝试过使用tf.equal,我希望它是布尔张量,然后使用tf.where,但几乎没有成功 任何帮助都将不胜感激 编辑: 如果有人感兴趣,我的回答是:Python 使用tf.equal比较两个长度不等的张量?,python,tensorflow,Python,Tensorflow,我有两个张量,A和B(都是一阶向量)。B是a的一个子集。我想知道B在a中的位置,也就是说,对于a的每个元素,是a{I}在B中。我尝试过使用tf.equal,我希望它是布尔张量,然后使用tf.where,但几乎没有成功 任何帮助都将不胜感激 编辑: 如果有人感兴趣,我的回答是: def compare(x): return tf.equal(result,x) loss_index = tf.reshape(tf.slice(tf.where(tf.map_fn(compare,
def compare(x):
return tf.equal(result,x)
loss_index = tf.reshape(tf.slice(tf.where(tf.map_fn(compare,B,dtype = tf.bool)),[0,1],[q,1]),[q])
其中q是B的长度。我认为你可以不用
映射fn
(它内部使用一个while循环,在GPU上也不并行),首先将B的大小平铺一次,重塑a,使用tf.equal
将广播的事实,然后使用tf。在平铺的维度上减少任何,得到一个B形状的向量