创建 Mars 张量#

您可以像 Numpy 一样从 Python 数组对象创建 mars 张量,或直接从 Numpy 数组创建。 更多关于 数组创建例程随机抽样 的详细信息。

mars.tensor.tensor

mars.tensor.array

创建一个张量。

在GPU上创建张量#

Mars 张量可以在 GPU 上运行,要创建张量,只需添加一个 gpu 参数,并将其设置为 True

import mars.tensor as mt

a = mt.random.rand(1000, 2000, gpu=True)  # allocate the tensor on GPU

创建稀疏张量#

Mars 张量可以是稀疏的,不幸的是,目前只支持 2-D 稀疏张量,之后将会支持多维张量。

import mars.tensor as mt

a = mt.eye(1000, sparse=True)  # create a sparse 2-D tensor with ones on the diagonal and zeros elsewhere

#

在 Mars 张量中,我们将张量切割成小块。参数 chunk_size 并非总是必需的, 在默认设置下,块的字节占用将为 128M。 但是,用户可以以更灵活的方式指定每个块的大小,以适应数据规模。 实际上,块的大小可能对执行性能产生重大影响。

将影响代码块大小的选项或参数列在下面:

  • options.tensor.chunk_size_limit 的默认值128*1024*1024(128M)更改。

  • chunk_size 指定为整数,例如 5000,表示所有维度的块大小最多为 5000

  • chunk_size 指定为元组,例如 (5000, 3000)

  • 明确地定义所有维度上所有块的大小,如 ((5000, 5000, 2000), (2000, 1000))

块示例#

假设我们有一个张量,其数据如下所示。

0 9 6 7 6 6
5 7 5 6 9 0
1 6 7 8 6 1
8 0 9 9 9 3
5 4 3 5 8 2
6 2 2 6 9 3
4 2 4 6 2 0
6 8 2 6 5 4

我们将展示不同的 chunk_size 参数将如何排列张量。

chunk_size=3:

0 9 6  7 6 6
5 7 5  6 9 0
1 6 7  8 6 1

8 0 9  9 9 3
5 4 3  5 8 2
6 2 2  6 9 3

4 2 4  6 2 0
6 8 2  6 5 4

chunk_size=2:

0 9  6 7  6 6
5 7  5 6  9 0

1 6  7 8  6 1
8 0  9 9  9 3

5 4  3 5  8 2
6 2  2 6  9 3

4 2  4 6  2 0
6 8  2 6  5 4

chunk_size=(3, 2):

0 9  6 7  6 6
5 7  5 6  9 0
1 6  7 8  6 1

8 0  9 9  9 3
5 4  3 5  8 2
6 2  2 6  9 3

4 2  4 6  2 0
6 8  2 6  5 4

chunk_size=((3, 1, 2, 2), (3, 2, 1)):

0 9 6  7 6  6
5 7 5  6 9  0
1 6 7  8 6  1

8 0 9  9 9  3

5 4 3  5 8  2
6 2 2  6 9  3

4 2 4  6 2  0
6 8 2  6 5  4