创建 Mars 张量#
您可以像 Numpy 一样从 Python 数组对象创建 mars 张量,或直接从 Numpy 数组创建。 更多关于 数组创建例程 和 随机抽样 的详细信息。
创建一个张量。 |
在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