我在一个轴上有稀疏数据,例如
[[0,0,0],
[1,2,3],
[0,0,0],
[0,0,0],
[4,5,6]]
为了提高效率,我希望以
的格式输入批量sparse_axes = [1,4]
sparse_data = [[1,2,3],[4,6,6]]
,在tensorflow中,对数据进行反稀疏处理。
我知道有一个函数tf.sparse
,但它不能在轴上工作,在这种情况下效率很低。在tensorflow中是否有这样一个函数:
> dense_data = tf.zeros((5,3))
> dense_data.assign(sparse_axes, sparse_data) # <--- this is the function I am looking for.
> dense_data
[[0,0,0],
[1,2,3],
[0,0,0],
[0,0,0],
[4,5,6]]
我找到了一个解决方案:
> sparse_axes = [1,4]
> sparse_data = [[1.0,2.0,3.0],[4.0,6.0,6.0]]
> dense_data = tf.IndexedSlices(
> tf.Variable(sparse_data), sparse_axes, dense_shape=(5,3)
> )
> dense_data.dense_shape
[5,3]
> dense_data * tf.ones((5,3))
<tf.Tensor: shape=(5, 3), dtype=float32, numpy=
array([[0., 0., 0.],
[1., 2., 3.],
[0., 0., 0.],
[0., 0., 0.],
[4., 6., 6.]], dtype=float32)>