sciai.common.TrainStepCell
============================================

.. image:: https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.2/resource/_static/logo_source.svg
    :target: https://gitee.com/mindspore/mindscience/blob/r0.5/docs/api_python/sciai/common/sciai.common.TrainStepCell.rst
    :alt: 查看源文件


.. py:class:: sciai.common.TrainStepCell(network, optimizer, grad_first=False, clip_grad=False, clip_norm=1e-3)

    具有梯度下降的 `Cell` ,类似于 `nn.TrainOneStepCell` ,但可以接受多输出。

    参数:
        - **network** (Cell) - 训练网络。网络支持多输出。
        - **optimizer** (Union[Cell]) - 用于更新网络参数的优化器。
        - **grad_first** (bool) - 若为True,则只有网络的第一个输出参与梯度下降。 否则所有输出之和参与梯度下降。默认值:False。
        - **clip_grad** (bool) - 是否裁剪梯度。默认值:False。
        - **clip_norm** (Union[float, int]) - 梯度裁剪率,需为正数. 仅当 `clip_grad` 为True时生效. 默认值:1e-3。

    输入:
        - **\*inputs** (tuple[Tensor]) - 输入张量的元组,形状为 :math:`(N, \ldots)`。

    输出:
        Union(Tensor, tuple[Tensor]),若干loss的Tensor,其形状通常是 :math:`()`。

    异常:
        - **TypeError** - 如果 `network` 或 `optimizer` 的类型不正确。