sparse_to_dense 要求索引在 0.7 中按字典顺序排序

sparse_to_dense requires indices to be lexicographically sorted in 0.7

sparse_to_dense 版本 0.7 和 0.6 之间的行为发生了变化,现在需要按字典顺序对索引进行排序。这对我的一些用途来说是一个有点繁重的要求,因为我生成索引的方式与我生成元素的方式相匹配(sparse_to_dense 的第三个参数)并且对两者进行排序有点麻烦。我看到 validate_indices 选项可以设置为 False 来忽略它。这样做安全吗?为什么首先要有这个要求?

查看 tensorflow::sparse::SparseTensor::ToDense<T>(), it seems that the conversion does not depend on the order of indices. Therefore, you can run tf.sparse_to_dense(sparse_indices, ..., validate_indices=False) 在未排序 sparse_indices 上的当前实现。只要没有重复的索引,就会产生一致的结果(否则看起来当前的实现是最后一个写入者获胜,但这在 API 中不能保证)。

看起来需要按字典顺序排序的索引是因为希望检查 sparse_indices 中没有重复项。您可以通过对索引张量进行简单扫描(仅考虑行 ii - 1)来检查 属性 不存在重复项的顺序,而以独立于顺序的方式检查重复项的成本更高。由于更保守的检查的上行空间有限,并且可能存在较大的性能下降,我们选择不实施它,但文档在这一点上可能会更清楚!