创建 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 张量可以是稀疏的,但目前只支持二维稀疏张量,在不远的将来将会支持多维张量。

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。用户也可以根据数据规模以更灵活的方式指定每个块的大小。需要注意的是,块的大小可能会严重影响执行的性能。

下面列出了影响块大小的选项或参数:

  • Change options.tensor.chunk_size_limit which is 128*1024*1024(128M) by default.

  • 指定 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