gpt4 book ai didi

python - 取一个张量的一个元素,该元素也在另一个张量中

转载 作者:行者123 更新时间:2023-12-01 08:54:48 24 4
gpt4 key购买 nike

我有两个张量,我必须迭代第一个张量以仅获取另一个张量内的元素。 t2 中只有一个元素也在 t1 内部。这是一个例子

t1 = tf.where(values > 0) # I get some indices example [6, 0], [3, 0]
t2 = tf.where(values2 > 0) # I get [4, 0], [3, 0]

t3 = .... # [3, 0]

我尝试使用 .eval() 评估和迭代它们,并使用以下命令检查 t2 的元素是否在 t1 中运算符in,但不起作用。 TensorFlow 中是否有一个函数可以做到这一点?

编辑

for index in xrange(max_indices):
indices = tf.where(tf.equal(values, (index + 1))).eval() # indices: [[1 0]\n [4 0]\n [9 0]]
cent_indices = tf.where(centers > 0).eval() # cent_indices: [[6 0]\n [9 0]]
indices_list.append(indices)
for cent in cent_indices:
if cent in indices:
centers_list.append(cent)
break

第一次迭代cent的值为[6 0],但它进入if条件。

回答

for index in xrange(max_indices):
indices = tf.where(tf.equal(values, (index + 1))).eval()
cent_indices = tf.where(centers > 0).eval()
indices_list.append(indices)
for cent in cent_indices:
# batch_item is an iterator from an outer loop
if values[batch_item, cent[0]].eval() == (index + 1):
centers_list.append(tf.constant(cent))
break

该解决方案与我的任务相关,但如果您正在寻找一维张量的解决方案,我建议您查看tf.sets.set_intersection

最佳答案

这就是你想要的吗?我只使用了这两个测试用例。

x = tf.constant([[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 1]])
y = tf.constant([[1, 2, 3, 4, 3, 6], [1, 2, 3, 4, 5, 1]])
# x = tf.constant([[1, 2], [4, 5], [7, 7]])
# y = tf.constant([[7, 7], [3, 5]])

def match(xiterations, yiterations, yvalues, xvalues ):
for i in range(xiterations):
for j in range(yiterations):
if (np.array_equal(yvalues[j], xvalues[i])):
print( yvalues[j])

with tf.Session() as sess:
xindex = tf.where( x > 4 )
yindex = tf.where( y > 4 )

xvalues = xindex.eval()
yvalues = yindex.eval()

xiterations = tf.shape(xvalues)[0].eval()
yiterations = tf.shape(yvalues)[0].eval()

print(tf.shape(xvalues)[0].eval())
print(tf.shape(yvalues)[0].eval())

if tf.shape(xvalues)[0].eval() >= tf.shape(yvalues)[0].eval():
match( xiterations, yiterations, yvalues, xvalues)
else:
match( yiterations, xiterations, xvalues, yvalues)

关于python - 取一个张量的一个元素,该元素也在另一个张量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52850196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com