Tensorflow在轴上分配稀疏输入



我在一个轴上有稀疏数据,例如

[[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)>

相关内容

  • 没有找到相关文章

最新更新