文档反馈

问题文档片段

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

提交类型
issue

有点复杂...

找人问问吧。

PR

小问题,全程线上修改...

一键搞定!

请选择提交类型

问题类型
规范和低错类

- 规范和低错类:

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

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

- 英文中包含中文字符。

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

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

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

易用性

- 易用性:

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

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

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

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

正确性

- 正确性:

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

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

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

- 代码片段错误。

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

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

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

风险提示

- 风险提示:

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

内容合规

- 内容合规:

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

- 内容侵权。

请选择问题类型

问题描述

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

mindspore.ops.norm

查看源文件
mindspore.ops.norm(A, ord=None, dim=None, keepdim=False, *, dtype=None)[源代码]

返回给定Tensor的矩阵范数或向量范数。

ord 为norm的计算模式。支持下列norm模式。

ord

矩阵范数

向量范数

None (默认值)

Frobenius norm

2-norm (参考最下方公式)

‘fro’

Frobenius norm

不支持

‘nuc’

nuclear norm

不支持

inf

max(sum(abs(x),dim=1))

max(abs(x))

-inf

min(sum(abs(x),dim=1))

min(abs(x))

0

不支持

sum(x!=0)

1

max(sum(abs(x),dim=0))

参考最下方公式

-1

min(sum(abs(x),dim=0))

参考最下方公式

2

最大奇异值

参考最下方公式

-2

最小奇异值

参考最下方公式

其余int或float值

不支持

sum(abs(x)ord)(1/ord)

参数:
  • A (Tensor) - shape为 (,n) 或者 (,m,n) 的Tensor,其中*是零个或多个batch维度。

  • ord (Union[int, float, inf, -inf, ‘fro’, ‘nuc’], 可选) - norm的模式。行为参考上表。默认值: None

  • dim (Union[int, Tuple(int)], 可选) - 计算向量范数或矩阵范数的维度。默认值: None

    • dim 为int时,会按向量范数计算。

    • dim 为一个二元组时,会按矩阵范数计算。

    • dim 为None且 ord 为None,A 将会被展平为1D并计算向量的2-范数。

    • dim 为None且 ord 不为None,A 必须为1D或者2D。

  • keepdim (bool) - 输出Tensor是否保留原有的维度。默认值: False

关键字参数:
  • dtype (mindspore.dtype, 可选) - 如果设置此参数,则会在执行之前将 A 转换为指定的类型,返回的Tensor类型也将为指定类型 dtype。默认值: None

返回:

Tensor,在指定维度 dim 上进行范数计算的结果,与输入 A 的数据类型相同。

异常:
  • ValueError - dim 超出范围。

  • TypeError - dim 既不是int也不是由int组成的tuple。

  • TypeError - A 是一个向量并且 ord 是str类型。

  • ValueError - A 是一个矩阵并且 ord 不是有效的取值。

  • ValueError - A 是一个矩阵并且 ord 为一个整型但是取值不为[1, -1, 2, -2]之一。

  • ValueError - dim 的两个元素在标准化过后取值相同。

  • ValueError - dim 的任意元素超出索引。

说明

  • 当前暂不支持复数。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore as ms
>>> import mindspore.ops as ops
>>> data_range = ops.arange(-13, 13, dtype=ms.float32)
>>> # Exclude 0 from original data for 0 is invalid input when `ord` is negative.
>>> x = data_range[data_range != 0]
>>> y = x.reshape(5, 5)
>>> print(ops.norm(x))
38.327538
>>> print(ops.norm(x, float('inf')))
13.0
>>> print(ops.norm(x, float('-inf')))
1.0
>>> print(ops.norm(x, 0))
25.0
>>> print(ops.norm(x, 1))
169.0
>>> print(ops.norm(x, -1))
0.15915091
>>> print(ops.norm(x, 2))
38.327538
>>> print(ops.norm(x, -2))
0.5647041
>>> print(ops.norm(x, 3))
24.309084
>>> print(ops.norm(x, -3))
0.74708974
>>> print(ops.norm(y))
38.327538
>>> print(ops.norm(y, 'fro'))
38.327538
>>> print(ops.norm(y, 'nuc'))
45.56681
>>> print(ops.norm(y, float('inf')))
55.0
>>> print(ops.norm(y, float('-inf')))
9.0
>>> print(ops.norm(y, 1))
35.0
>>> print(ops.norm(y, -1))
33.0
>>> print(ops.norm(y, 2))
37.57774
>>> print(ops.norm(y, -2))
1.590545e-07
>>> m = ms.Tensor([[1., -1., 2.], [-2., 3., -4.]])
>>> print(ops.norm(m, dim=0))
[2.236068  3.1622777 4.472136 ]
>>> print(ops.norm(m, dim=1))
[2.4494898 5.3851647]
>>> print(ops.norm(m, ord=1, dim=1))
[4. 9.]
>>> print(ops.norm(m, ord=-2, dim=0))
[0.8944272  0.94868326 1.7888544 ]
>>> print(ops.norm(m, ord=2, dim=1))
[2.4494898 5.3851647]
>>> n = ops.arange(27, dtype=ms.float32).reshape(3, 3, 3)
>>> print(ops.norm(n, dim=(1, 2)))
[14.282857 39.76179  66.45299 ]
>>> print(ops.norm(n[0, :, :]), ops.norm(n[1, :, :]), ops.norm(n[2, :, :]))
14.282857 39.76179 66.45299