我想为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)
答案 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