sponge.optimizer.SteepestDescent
====================================

.. image:: https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source.svg
    :target: https://gitee.com/mindspore/mindscience/blob/master/MindSPONGE/docs/api/api_python/optimizer/sponge.optimizer.SteepestDescent.rst
    :alt: 查看源文件


.. py:class:: sponge.optimizer.SteepestDescent(params: Union[List[Parameter], List[dict]], learning_rate: Union[float, int, Tensor, Iterable, LearningRateSchedule] = 1e-03, weight_decay: Union[float, int] = 0.0, loss_scale: float = 1.0, max_shift: float = None)

    实现最陡下降(梯度下降)算法。

    .. note::
        如果参数未分组,则优化器中的 `weight_decay` 将应用于名称中不含 'beta' 或 'gamma' 的网络参数。用户可以对参数进行分组以更改权重衰减策略。当参数分组时,每个组可以设置 `weight_decay`。如果没有,则将应用优化器中的 `weight_decay`。

    参数:
        - **params** (Union[list[`mindspore.Parameter`], list[dict]]) - 必须是 `mindspore.Parameter` 的列表或字典的列表。当 `params` 是字典列表时,可以解析的键包括 "params"、"lr"、"grad_centralization" 和 "order_params"。

          - **params** - 必需。当前组中的参数。值必须是 `mindspore.Parameter` 的列表。
          - **lr** - 可选。如果键中有 "lr",将使用相应的学习率值。
            如果没有,则使用优化器中的 `learning_rate`。支持固定和动态学习率。
          - **weight_decay** - 目前不支持通过分组参数使用不同的 `weight_decay`。
          - **grad_centralization** - 可选。必须是bool。如果键中有"grad_centralization",则使用设置的值。 如果没有,默认为 ``False``。此配置仅在卷积层中有效。
          - **order_params** - 可选。当参数分组时,通常用于维持网络中出现的参数的顺序以提高性能。值应为优化器中将遵循的参数顺序。如果键中有 `order_params`,将忽略其他键, `order_params` 的元素必须在一个 `params` 组中。

        - **learning_rate** (Union[float, int, Tensor, Iterable, LearningRateSchedule], 可选) - 学习率。默认值 ``1e-03``。

          - float: 固定学习率值。必须大于或等于0。
          - int: 固定学习率值。必须大于或等于0。它将转换为 float。
          - Tensor: 其值应该是标量或1-D向量。对于标量,将应用固定学习率。
            对于向量,学习率是动态的,第 i 步将采用第 i 个值作为学习率。
          - Iterable: 学习率是动态的。第 i 步将采用第 i 个值作为学习率。
          - `mindspore.nn.LearningRateSchedule`: 学习率是动态的。在训练过程中,优化器调用 LearningRateSchedule 实例,并以步骤作为输入来获取当前步骤的学习率。

        - **weight_decay** (Union[float, int], 可选) - 权重衰减。必须大于或等于0。如果 `weight_decay` 是 int,将转换为 float。默认值 ``0.0``。
        - **loss_scale** (float, 可选) - 损失缩放的浮点值。必须大于0。如果 `loss_scale` 输入类型为 int,将转换为 float。通常使用默认值。只有当使用 `mindspore.amp.FixedLossScaleManager` 进行训练并且 `mindspore.amp.FixedLossScaleManager` 中的 `drop_overflow_update` 设置为 ``False`` 时,此值需要与 `mindspore.amp.FixedLossScaleManager` 中的 `loss_scale` 相同。有关更多详细信息,请参阅类 `mindspore.amp.FixedLossScaleManager`。默认值: ``1.0``。
        - **max_shift** (float, 可选) - 最大偏移的浮点值。必须大于0。它是优化器中每次迭代的偏移距离上限。如果最大偏移设置为 ``None``,则不会对偏移进行任何操作。但如果 max_shift 是一个给定的float,则偏移的界限为:[-max_shift, max_shift] 默认值: ``None``。

    输入:
        - **gradients** (Tensor) - 参数的梯度。

    输出:
        - **success** (bool) - 操作是否成功。

    异常:
        - **TypeError** - 如果 `learning_rate` 不是 int、float、Tensor、Iterable、LearningRateSchedule 中的一种。
        - **TypeError** - 如果 `parameters` 的元素既不是 Parameter 也不是 dict。
        - **TypeError** - 如果 `loss_scale` 不是 float。
        - **TypeError** - 如果 `weight_decay` 既不是 float 也不是 int。
        - **ValueError** - 如果 `loss_scale` 小于或等于 0。
        - **ValueError** - 如果 `weight_decay` 小于 0。
        - **ValueError** - 如果 `learning_rate` 是一个 Tensor,但是 tensor 的维度大于 1。