文档反馈

问题文档片段

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

提交类型
issue

有点复杂...

找人问问吧。

请选择提交类型

问题类型
规范和低错类

- 规范和低错类:

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

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

- 英文中包含中文字符。

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

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

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

易用性

- 易用性:

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

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

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

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

正确性

- 正确性:

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

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

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

- 代码片段错误。

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

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

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

风险提示

- 风险提示:

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

内容合规

- 内容合规:

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

- 内容侵权。

请选择问题类型

问题描述

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

mindspore.scipy.optimize.minimize

mindspore.scipy.optimize.minimize(func, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None)[源代码]

最小化一个或多个变量的标量函数。

此函数的API与SciPy匹配,但有一些细微的差异:

jac 为None时,会使用MindSpore的自动微分功能计算 func 的反向梯度。 method 参数是必需的。如果不指定求解器,将触发异常。 尚未实现SciPy接口中的如下可选参数:"hess""hessp""bounds""constraints""tol""callback"。 由于线搜索实现的差异,优化结果可能与SciPy不同。

说明

  • minimize 接口当前还不支持多维Tensor输入或求微分,但有支持的计划。

  • Windows平台上还不支持 minimize

  • LAGRANGE 方法仅在 GPU 上支持。

参数:
  • func (Callable) - 要最小化的目标函数 fun(x,args)>float,其中 x 是一个一维数组,其shape为 (n,)args 是一个Tuple,用于指定 func 的执行所需的所有参数。 当 jac 为None时,func 必须能支持微分。

  • x0 (Tensor) - 初始猜测。shape为 (n,) 的实数数组,其中 n 是自变量的个数。

  • args (Tuple) - 传递给目标函数的额外参数。默认值:()

  • method (str) - 求解器类型。应为 “BFGS”“LBFGS”“LAGRANGE” 中的一种。

  • jac (Callable, 可选) - 计算梯度向量的函数。 只支持 "BFGS""LBFGS"。如果为None,则将使用 func 的反向梯度函数进行梯度计算。 如果 jac 是可执行的,则应该是能返回梯度向量的函数:jac(x,args)>array_like,shape(n,),其中x是一个数组,其shape为 (n,)args 是一个具有固定参数的元组。

  • hess (Callable, 可选) - 计算Hessian矩阵的方法。当前尚未实现。

  • hessp (Callable, 可选) - 目标函数的Hessian乘以任意向量 p 。当前尚未实现。

  • bounds (Sequence, 可选) - x 中的每个元素的 (min, max) 对的序列。当前尚未实现。

  • constraints (Callable, 可选) - 表示不等式的约束,约束中的每个函数都将 function < 0 表示为不等式约束。

  • tol (float, 可选) - 异常终止的容差范围。如需更具体的操控,请使用求解器里专门的选项。默认值:None

  • callback (Callable, 可选) - 每次迭代后调用的可执行函数。当前尚未实现。

  • options (Mapping[str, Any], 可选) - 用于保存求解器可选项的字典。所有求解器方法都能支持下述通用选项。默认值:None

    • "history_size" (int) - 用于更新Hession矩阵的逆的缓冲区大小,仅支持与 method="LBFGS" 一起使用。默认值:20

    • "maxiter" (int) - 要执行的最大迭代次数。根据方法的不同,每个迭代可能会使用多个函数进行求值。

    以下选项是拉格朗日方法的专有选项:

    • "save_tol" (list) - 保存 tol 的列表,长度与 constrains 相同。

    • "obj_weight" (float) - 目标函数的权重,通常在1.0 - 100000.0之间。

    • "lower" (Tensor) - 变量的下限约束,必须具有与 x0 相同的shape。

    • "upper" (Tensor) - 变量的上限约束,必须具有与 x0 相同的shape。

    • "learning_rate" (float) - 每个Adam步骤的学习率。

    • "coincide_func" (Callable) - 子函数,表示目标函数和约束之间的公共部分,用于避免冗余计算。

    • "rounds" (int) - 更新拉格朗日乘数的次数。

    • "steps" (int) - 每执行 steps 次就执行一次Adam去更新拉格朗日乘数。

    • "log_sw" (bool) - 是否打印每一步的 loss 值。

返回:

优化的结果。

支持平台:

GPU CPU

样例:

>>> import numpy as onp
>>> from mindspore.scipy.optimize import minimize
>>> from mindspore import Tensor
>>> x0 = Tensor(onp.zeros(2).astype(onp.float32))
>>> def func(p):
...     x, y = p
...     return (x ** 2 + y - 11.) ** 2 + (x + y ** 2 - 7.) ** 2
>>> res = minimize(func, x0, method='BFGS', options=dict(maxiter=None, gtol=1e-6))
>>> print(res.x)
[3. 2.]
>>> l_res = minimize(func, x0, method='LBFGS', options=dict(maxiter=None, gtol=1e-6))
>>> print(l_res.x)
[3. 2.]