class_docstr: 在每次 :func:`optimizer.step` 之前对参数的梯度进行截断。
  
  :param clip_value: 将梯度限制到 [-clip_value, clip_value] 之间。``clip_value`` 应该为正数；
  :param clip_type: 应为 ``'norm'``, ``'value'`` 中的一个:
  
      1. 为 ``'norm'`` 时, 将梯度的范数限制在 [-clip_value, clip_value] 之间；
      2. 为 ``'value'`` 时，, 将梯度限制在 [-clip_value, clip_value] 之间，小于 ``-clip_value``
         的梯度被赋值为 ``-clip_value``，大于 ``clip_value`` 的梯度被赋值为 ``clip_value``；
  
  :param parameters: 参数，一般通过 :func:`model.parameters` 获得。
      如果为 ``None`` 则默认对 Trainer 的 optimizers 中所有参数进行梯度裁剪。
code: def __init__(
      self,
      clip_value: int = 1,
      clip_type: str = "norm",
      parameters: Union["torch.Tensor", List["torch.Tensor"]] = None,
  ):
      super().__init__()
  
      from torch import nn
  
      if clip_type == "norm":
          self.clip_fun = nn.utils.clip_grad_norm_
      elif clip_type == "value":
          self.clip_fun = nn.utils.clip_grad_value_
      else:
          raise ValueError("Only supports `norm` or `value` right now.")
      if parameters is not None:
          self.parameters = list(parameters)
      else:
          self.parameters = None
      self.clip_value = clip_value
      self.clip_type = clip_type
  
file_path: fastNLP/fastNLP/core/callbacks/torch_callbacks/torch_grad_clip_callback.py
imports: from typing import Union, List
  from ..callback import Callback
  from ...drivers.torch_driver.fairscale import FairScaleDriver
  from ...drivers.torch_driver import TorchDriver
  from fastNLP.envs.imports import _NEED_IMPORT_FAIRSCALE
label_desc: Use image node_id 1 to create a new TorchGradClipCallback object from inherited base classes: Callback with example: obj = TorchGradClipCallback(clip_value, clip_type, parameters)