在张量流中使用布尔张量选择张量子集

时间:2017-02-18 06:11:30

标签: python python-3.x tensorflow

arr1我有两个排名为arr2m的{​​{1}} n。张量arr2是布尔值;每行中恰好有一个条目是True。我想提取长度为arr3的新等级-1张量m,其中i的{​​{1}}条目等于arr3的条目第i行对应arr1i等于arr2的位置。

True中,我可以按照以下方式执行此操作:

numpy

我可以在arr1 = np.array([[1,2], [3,4]]) arr2 = np.array([[0,1], [1,0]], dtype="bool") arr3 = arr1[arr2] 做类似的事吗?我知道我可以tensorflow我的张量,然后使用eval()函数,但这似乎效率低下。

question建议使用numpytf.gather,但它并不像我的问题那样处理折叠输出的维度。

1 个答案:

答案 0 :(得分:2)

您可以使用tf.boolean_mask

from __future__ import print_function

import tensorflow as tf

with tf.Session() as sess:
    arr1 = tf.constant([[1,2],
                        [3,4]])
    arr2 = tf.constant([[False, True],
                        [True, False]])
    print(sess.run(tf.boolean_mask(arr1, arr2)))

应该给出:[2,3]