我有一个Tensor,我想计算基于分段的中值。使用tf.math.segment_max/sum/mean可以很容易地计算分段最大值、求和、平均值等,但是如果我想计算分段中值,我该怎么做呢?
x = tf.constant([[0.1, 0.2, 0.4, 0.5],
[0.1, 0.8, 0.2, 0.6],
[0.1, 0.2, 0.4, 0.5],
[0.3, 0.1, 0.2, 0.9],
[0.1, 0.1, 0.6, 0.5]])
result = tf.math.segment_max(x, tf.constant([0, 1, 1, 1, 2]))
result
tf.constant([[0.1, 0.2, 0.4, 0.5],
[0.1, 0.2, 0.2, 0.6],
[0.1, 0.1, 0.6, 0.5]])
1条答案
按热度按时间iyr7buue1#
可通过将Tensor转换为粗糙Tensor,其中
tf.RaggedTensor.from_value_rowids
使用segment_ids
。然后沿着每个轴应用median
。例如,要获得上例的粗糙Tensor:
然后,我们将中值应用于上述Tensor的每一行
1.每行Tensor的中值为:
1.段中值
segment_median(x,tf.常量([0,1,1,1,2]))返回