说我有一个具有动态尺寸的张量-例如[None, None]
。
现在,我想沿单个轴应用tf.reduce_sum
等操作,同时还要应用过滤器。
例如:
x_data = tf.placeholder(tf.float32, [None, None])
x = tf.Variable(x_data, validate_shape=False)
x_mask_data = tf.placeholder(tf.boolean, [None, None])
x_mask = tf.Variable(x_mask_data , validate_shape=False)
y = tf.reduce_sum(x, axis=1, mask=x_mask_data) # <-- how can I do this?
y.shape() == [x_data.shape[0]]
,或更具体地说,无论x_data
的输入形状是多少,都小于1轴。
现在,tf.boolean_mask
在这里不好,因为它只会将所有张量维数集中为1维-可以理解的是,因为我们不确定滤波器会为每个条目贡献相同数量的元素第一维的。
如果存在这种情况,它将为我减少很多代码。我没有看到任何设计上的限制将使像这样的事情变得不可能-只要收缩尺寸中有1个元素,其他尺寸将保留其各自的尺寸,如果没有,我们将nan
或其他尺寸默认值。