通过张量流输出二维布尔掩码值
output 2d boolean masked value by tensorflow
我有一个 [n,m] 输入和 [n,m] 布尔掩码。我怎么能输出一个 [n,x] 过滤矩阵,而不是 [x] 数组?
例如输入
x = [[1,2,3],[4,5,6]]
和一个布尔掩码
bm = [[1,0,1],[1,0,0]]
我尝试使用 tf.boolean_mask() 并得到了 [1,3,4]。
我怎样才能得到像
这样的二维结果
result = [[1,3],[4]]
谢谢!
在 TF 中无法执行此操作。但是,您可以考虑在 numpy 中使用 Masked Array。你可以这样做
>>> import numpy as np, numpy.ma as ma
>>> x = ma.array([1., -1., 3., 4., 5., 6.], mask=[0,0,0,0,1,0])
>>> y = ma.array([1., 2., 0., 4., 5., 6.], mask=[0,0,0,0,0,1])
>>> print np.sqrt(x/y)
[1.0 -- -- 1.0 -- --]
TF 中不能存在此操作,因为 TF 对张量和 returns 张量进行操作。您收到的结果包含不同数量的元素,而不是张量。
我有一个 [n,m] 输入和 [n,m] 布尔掩码。我怎么能输出一个 [n,x] 过滤矩阵,而不是 [x] 数组?
例如输入
x = [[1,2,3],[4,5,6]]
和一个布尔掩码
bm = [[1,0,1],[1,0,0]]
我尝试使用 tf.boolean_mask() 并得到了 [1,3,4]。 我怎样才能得到像
这样的二维结果result = [[1,3],[4]]
谢谢!
在 TF 中无法执行此操作。但是,您可以考虑在 numpy 中使用 Masked Array。你可以这样做
>>> import numpy as np, numpy.ma as ma
>>> x = ma.array([1., -1., 3., 4., 5., 6.], mask=[0,0,0,0,1,0])
>>> y = ma.array([1., 2., 0., 4., 5., 6.], mask=[0,0,0,0,0,1])
>>> print np.sqrt(x/y)
[1.0 -- -- 1.0 -- --]
TF 中不能存在此操作,因为 TF 对张量和 returns 张量进行操作。您收到的结果包含不同数量的元素,而不是张量。