【问题标题】:Select subset of tensor using boolean tensor in tensorflow在张量流中使用布尔张量选择张量的子集
【发布时间】:2017-02-18 06:11:29
【问题描述】:

我有两个 rank-2 张量 arr1arr2,形状为 m by n。张量 arr2 是布尔值;在其每一行中恰好有一个条目是True。我想提取长度为m 的新秩1 张量arr3,其中arr3ith 条目等于arr1ith 行中的条目,对应于iarr2行等于True

numpy,我可以这样做:

arr1 = np.array([[1,2],
                 [3,4]])
arr2 = np.array([[0,1],
                 [1,0]], dtype="bool")
arr3 = arr1[arr2]

我可以在tensorflow 中做类似的事情吗?我知道我可以eval() 我的张量然后使用numpy 函数,但这似乎效率低下。

这个question 建议使用tf.gathertf.select,但它不像我的问题那样处理折叠输出的维度。

【问题讨论】:

    标签: python python-3.x tensorflow


    【解决方案1】:

    你也许可以使用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]

    【讨论】:

      猜你喜欢
      • 2016-02-19
      • 2019-11-12
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多