从TensorFlow中的tf.SparseTensor计算每行的平均值

时间:2018-10-11 15:13:47

标签: python tensorflow

我想为tf.SparseTensor计算轴= 0的平均值。我想要类似tf.sparse_reduce_sum的东西。 TensorFlow没有提供类似的平均值计算功能。有什么方法可以计数每一行中的值,以便将它们除以总和?

indices = np.array([[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5],
               [1, 0], [1, 1], [1, 3], [1, 4], [1, 5],
               [2, 1], [2, 2], [2, 3], [2, 4],
               [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5],
               [4, 0], [4, 2], [4, 3], [4, 4], [4, 5]], dtype=np.int64)

values = np.array([7, 6, 7, 4, 5, 4,
                   6, 7, 4, 3, 4,
                   3, 3, 1, 1,
                   1, 2, 2, 3, 3, 4,
                   1, 1, 2, 3, 3], dtype=np.float64)

dense_shape = np.array([5, 6], dtype=np.int64)

tRatings = tf.SparseTensor(indices, values, dense_shape)

2 个答案:

答案 0 :(得分:0)

尝试使用get_shape(),然后乘以shape[0] * shape[1],这就是元素总数

答案 1 :(得分:0)

您可以通过将减少的和除以第0维的大小来计算减少的平均值:

tRatings = tf.SparseTensor(indices, values, dense_shape)
reduced_sum = tf.sparse_reduce_sum(tRatings, 0)  # Sum of each row
reduced_mean = reduced_sum / tf.cast(tRatings.dense_shape[0], tf.float64)  # Mean of each row