【发布时间】:2019-06-27 17:45:20
【问题描述】:
我正在尝试实现“segment_collect”(非常类似于segment_max,但收集到张量而不是取最大值)。
t = tf.constant(["a", "b", "c", "d"])
s = tf.constant([0, 1, 1, 0])
r = tf.segment_collect(t, s) # r == [["a", "d"], ["b", "c"]]
一个简单的实现是逐行构建结果,在以下伪代码中:
r = []
for i in range(2):
mask = tf.equal(s, i)
values = tf.boolean_mask(t, mask)
r.append(values)
# convert r into a tensor at last
但这不是很有效。
一个后续问题是:是否有一种通用的方法来对张量进行分组/聚合?除了 tensorflow 中的 segment_{min/max/mean/prod/sum} 之外,这将允许更多的操作,例如 segment_size、segment_median、segment_percentile。
【问题讨论】:
标签: python tensorflow