Tensor
概述
张量(Tensor)是MindSpore网络运算中的基本数据结构。张量中的数据类型可参考dtype。
不同维度的张量分别表示不同的数据,0维张量表示标量,1维张量表示向量,2维张量表示矩阵,3维张量可以表示彩色图像的RGB三通道等等。
本文中的所有示例,支持在PyNative模式下运行。
张量构造
构造张量时,支持传入Tensor
、float
、int
、bool
、tuple
、list
和NumPy.array
类型,其中tuple
和list
里只能存放float
、int
、bool
类型数据。
Tensor
初始化时,可指定dtype。如果没有指定dtype,初始值int
、float
、bool
分别生成数据类型为mindspore.int32
、mindspore.float32
、mindspore.bool_
的0维Tensor,
初始值tuple
和list
生成的1维Tensor
数据类型与tuple
和list
里存放的数据类型相对应,如果包含多种不同类型的数据,则按照优先级:bool
< int
< float
,选择相对优先级最高类型所对应的mindspore数据类型。
如果初始值是Tensor
,则生成的Tensor
数据类型与其一致;如果初始值是NumPy.array
,则生成的Tensor
数据类型与之对应。
代码样例如下:
import numpy as np
from mindspore import Tensor
from mindspore import dtype as mstype
x = Tensor(np.array([[1, 2], [3, 4]]), mstype.int32)
y = Tensor(1.0, mstype.int32)
z = Tensor(2, mstype.int32)
m = Tensor(True, mstype.bool_)
n = Tensor((1, 2, 3), mstype.int16)
p = Tensor([4.0, 5.0, 6.0], mstype.float64)
q = Tensor(p, mstype.float64)
print(x, "\n\n", y, "\n\n", z, "\n\n", m, "\n\n", n, "\n\n", p, "\n\n", q)
输出如下:
[[1 2]
[3 4]]
1
2
True
[1 2 3]
[4. 5. 6.]
[4. 5. 6.]
张量的属性和方法
属性
张量的属性包括形状(shape)和数据类型(dtype)。
形状:
Tensor
的shape,是一个tuple。数据类型:
Tensor
的dtype,是MindSpore的一个数据类型。
代码样例如下:
import numpy as np
from mindspore import Tensor
from mindspore import dtype as mstype
x = Tensor(np.array([[1, 2], [3, 4]]), mstype.int32)
x_shape = x.shape
x_dtype = x.dtype
print(x_shape, x_dtype)
输出如下:
(2, 2) Int32
方法
张量的方法包括all
、any
和asnumpy
,all
和any
方法目前只支持Ascend,并且要求Tensor
的数据类型是mindspore.bool_
。
all(axis, keep_dims)
:在指定维度上通过and
操作进行归约,axis
代表归约维度,keep_dims
表示是否保留归约后的维度。any(axis, keep_dims)
:在指定维度上通过or
操作进行归约,参数含义同all
。asnumpy()
:将Tensor
转换为NumPy的array。
代码样例如下:
import numpy as np
from mindspore import Tensor
from mindspore import dtype as mstype
x = Tensor(np.array([[True, True], [False, False]]), mstype.bool_)
x_all = x.all()
x_any = x.any()
x_array = x.asnumpy()
print(x_all, "\n\n", x_any, "\n\n", x_array)
输出如下:
False
True
[[ True True]
[False False]]