文档反馈

问题文档片段

问题文档片段包含公式时,显示为空格。

提交类型
issue

有点复杂...

找人问问吧。

请选择提交类型

问题类型
规范和低错类

- 规范和低错类:

- 错别字或拼写错误,标点符号使用错误、公式错误或显示异常。

- 链接错误、空单元格、格式错误。

- 英文中包含中文字符。

- 界面和描述不一致,但不影响操作。

- 表述不通顺,但不影响理解。

- 版本号不匹配:如软件包名称、界面版本号。

易用性

- 易用性:

- 关键步骤错误或缺失,无法指导用户完成任务。

- 缺少主要功能描述、关键词解释、必要前提条件、注意事项等。

- 描述内容存在歧义指代不明、上下文矛盾。

- 逻辑不清晰,该分类、分项、分步骤的没有给出。

正确性

- 正确性:

- 技术原理、功能、支持平台、参数类型、异常报错等描述和软件实现不一致。

- 原理图、架构图等存在错误。

- 命令、命令参数等错误。

- 代码片段错误。

- 命令无法完成对应功能。

- 界面错误,无法指导操作。

- 代码样例运行报错、运行结果不符。

风险提示

- 风险提示:

- 对重要数据或系统存在风险的操作,缺少安全提示。

内容合规

- 内容合规:

- 违反法律法规,涉及政治、领土主权等敏感词。

- 内容侵权。

请选择问题类型

问题描述

点击输入详细问题描述,以帮助我们快速定位问题。

Tensor

image0image1image2

概述

张量(Tensor)是MindSpore网络运算中的基本数据结构。张量中的数据类型可参考dtype

不同维度的张量分别表示不同的数据,0维张量表示标量,1维张量表示向量,2维张量表示矩阵,3维张量可以表示彩色图像的RGB三通道等等。

本文中的所有示例,支持在PyNative模式下运行。

张量构造

构造张量时,支持传入TensorfloatintbooltuplelistNumPy.array类型,其中tuplelist里只能存放floatintbool类型数据。

Tensor初始化时,可指定dtype。如果没有指定dtype,初始值intfloatbool分别生成数据类型为mindspore.int32mindspore.float32mindspore.bool_的0维Tensor, 初始值tuplelist生成的1维Tensor数据类型与tuplelist里存放的数据类型相对应,如果包含多种不同类型的数据,则按照优先级:bool < int < float,选择相对优先级最高类型所对应的mindspore数据类型。 如果初始值是Tensor,则生成的Tensor数据类型与其一致;如果初始值是NumPy.array,则生成的Tensor数据类型与之对应。

代码样例如下:

[1]:
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的一个数据类型。

代码样例如下:

[2]:
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

方法

张量的方法包括allanyasnumpyallany方法目前只支持Ascend,并且要求Tensor的数据类型是mindspore.bool_

  • all(axis, keep_dims):在指定维度上通过and操作进行归约,axis代表归约维度,keep_dims表示是否保留归约后的维度。

  • any(axis, keep_dims):在指定维度上通过or操作进行归约,参数含义同all

  • asnumpy():将Tensor转换为NumPyarray

代码样例如下:

[3]:
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]]