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