我提出的问题与TensorFlow broadcasting of RaggedTensor非常相似
基本上,我在做机器学习,一个数据样本由一系列坐标列表组成,其中每个坐标列表代表画布上的一个绘图笔划。一个这样的样本可能是,
[
[[2,3], [2,4], [3,6], [4,8]],
[[7,3], [10,9]],
[[10,12], [14,17], [13,15]]
]
我想通过减去平均值并除以标准差来归一化这些坐标。具体来说,我想分别找到所有x坐标(index=0)和y坐标(index=1)的平均值和标准差。
list_points=tf.ragged.constant(list_points)
STD=tf.math.reduce_std(list_points, axis=(0,1))
mean=tf.reduce_mean(list_points, axis=(0,1))
标准差和平均值的形状均为(2,)
现在,我想从list_points(这是坐标列表的示例列表)中减去均值,但似乎对于ragged_rank=3,我只能减去覆盖每个数据点的标量或Tensor。有没有简单的方法可以简单地将RaggedTensor减去shape(2,)的Tensor?
我试过直接从list_points中减去mean,但是无论我做什么,我都会得到这个错误:
ValueError:pylist的标量值深度为3,但ragged_rank=3要求标量值深度大于3
1条答案
按热度按时间7lrncoxx1#
在您的例子中,
ragged_rank
实际上是1。因此tf.reduce_mean
可以按如下方式使用对于
ragged_rank=2
情况,我们可以吸引更棘手的tf.math.segment_mean
。