阅读(5.7k) 书签 (0)

TensorFlow函数:tf.sparse_reset_shape

2018-03-06 10:49 更新

tf.sparse_reset_shape 函数

sparse_reset_shape(
    sp_input,
    new_shape=None
)

定义在:tensorflow/python/ops/sparse_ops.py.

参见指南:稀疏张量>操纵

将带有索引和值的 SparseTensor 的形状重置为未更改.

如果 new_shape 是 None,则返回 sp_input 的副本, 其形状重置为 sp_input 的紧边界框.如果 sp_input 没有值,则这将是一个由全零组成的形状.

如果提供 new_shape,则它在所有维度中必须大于或等于 sp_input 的形状.当满足这个条件时,返回的 SparseTensor 将其形状重置为 new_shape,并将其索引和值与 sp_input 保持不变.

例如:

考虑一个形状为 [2,3,5] 的 sp_input,如下所示:

[0, 0, 1]: a
[0, 1, 0]: b
[0, 2, 2]: c
[1, 0, 3]: d
  • 将 new_shape 设置为 [3,7] 是错误的,因为这代表了秩为2的张量,而 sp_input 的秩为3.这可能是图形构造期间的 ValueError(如果两个形状都已知)或运行时 OpError.
  • 将 new_shape 设置为 [2,3,6] 会很好,因为与原始形状 [2,3,5] 相比,每个维度的形状都较大或相等.
  • 另一方面,将 new_shape 设置为 [2,3,4] 也是一个错误:第三个维度小于原始形状 [2,3,5](并且 InvalidArgumentError 将会提高).
  • 如果 new_shape 是 None,则返回的 SparseTensor 将具有一个形状 [2,3,4],这是 sp_input 的一个紧密的边界框.

函数参数:

  • sp_input:输入的 SparseTensor.
  • new_shape:无或表示返回的 SparseTensor的新形状的矢量.

函数返回:

该函数返回一个从 input_sp 中未做更改的 SparseTensor 指数和值.如果设置的话,它的形状是 new_shape.否则,它是 input_sp 的紧密边界框.

可能引发的异常:

  • TypeError:如果 sp_input 不是 SparseTensor.
  • ValueError:如果 new_shape 表示的张量与 sp_input 的秩不同(如果在构建图形时已知形状).
  • ValueError:如果 new_shape 在图形构建过程中确定维度太小.
  • OpError:如果 new_shape 的维度太小.如果在图形构建期间未知形状,并且在运行期间发现秩不匹配.