arr1
我有两个排名为arr2
和m
的{{1}} n
。张量arr2
是布尔值;每行中恰好有一个条目是True
。我想提取长度为arr3
的新等级-1张量m
,其中i
的{{1}}条目等于arr3
的条目第i
行对应arr1
行i
等于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建议使用numpy
和tf.gather
,但它并不像我的问题那样处理折叠输出的维度。
答案 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]