gpt4 book ai didi

python - 张量和稀疏张量有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 18:29:23 28 4
gpt4 key购买 nike

我无法理解 Tensorflow TensorsSparse Tensors 的含义和用法。

根据文档

张量

Tensor is a typed multi-dimensional array. For example, you can represent a mini-batch of images as a 4-D array of floating point numbers with dimensions [batch, height, width, channels].

稀疏张量

TensorFlow represents a sparse tensor as three separate dense tensors: indices, values, and shape. In Python, the three tensors are collected into a SparseTensor class for ease of use. If you have separate indices, values, and shape tensors, wrap them in a SparseTensor object before passing to the ops below.

我的理解是张量用于操作、输入和输出。稀疏张量只是张量(密集?)的另一种表示。希望有人能进一步解释差异及其用例。

最佳答案

Matthew 做得很好,但我很想举个例子,通过一个例子来更多地阐明稀疏张量。

如果张量有很多零值,则可以称为稀疏张量。

让我们考虑一个稀疏的一维张量

[0, 7, 0, 0, 8, 0, 0, 0, 0]

相同张量的稀疏表示将只关注非零值

values = [7,8]

我们还必须通过索引记住这些值出现的位置

indices = [1,4]

对于这个一维示例,一维索引形式将与某些方法一起使用,但通常索引具有多个维度,因此它会更加一致(并且在任何地方都适用)来表示这样的索引:

indices = [[1], [4]]

对于值和索引,我们还没有足够的信息。有多少个零?我们表示张量的稠密形状。

 dense_shape = [9]

values、indices 和 dense_shape 这三样东西一起是张量的稀疏表示

在tensorflow 2.0中可以实现为

x = tf.SparseTensor(values=[7,8],indices=[[1],[4]],dense_shape=[9])
x
#o/p: <tensorflow.python.framework.sparse_tensor.SparseTensor at 0x7ff04a58c4a8>

print(x.values)
print(x.dense_shape)
print(x.indices)
#o/p:
tf.Tensor([7 8], shape=(2,), dtype=int32)
tf.Tensor([9], shape=(1,), dtype=int64)
tf.Tensor(
[[1]
[4]], shape=(2, 1), dtype=int64)

已编辑以更正评论中指出的索引。

关于python - 张量和稀疏张量有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47662143/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com