您可以像 Numpy 一样从 Python 数组创建 Mars 张量,或者直接从 Numpy 数组创建。关于 从数组创建 和 随机抽样 的更多细节。
mars.tensor.tensor
mars.tensor.array
创建一个张量。
Mars张量可以在GPU上运行,用于张量创建,只需添加一个 gpu 参数,然后将其设置为 True 。
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。用户也可以根据数据规模以更灵活的方式指定每个块的大小。需要注意的是,块的大小可能会严重影响执行的性能。
chunk_size
下面列出了影响块大小的选项或参数:
Change options.tensor.chunk_size_limit which is 128*1024*1024(128M) by default.
options.tensor.chunk_size_limit
指定 chunk_size 为整数, 5000 表示所有维度的块大小最多为 5000
5000
指定 chunk_size 为元组,如 (5000, 3000)
(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:
chunk_size=3
chunk_size=2:
chunk_size=2
chunk_size=(3, 2):
chunk_size=(3, 2)
chunk_size=((3, 1, 2, 2), (3, 2, 1)):
chunk_size=((3, 1, 2, 2), (3, 2, 1))