class_docstr: 目前支持 ``[oneflow.tensor([3, 2], oneflow.tensor([1])]`` 类似的输入，若内部元素不为 :class:`oneflow.Tensor` ，则必须含有 :meth:`tolist` 方法。
  
      >>> OneflowTensorPadder.pad([np.array([3, 4]), np.array([1])], pad_val=-100)
      [[   3.    4.]
       [   1. -100.]]
      >>> OneflowTensorPadder.pad([oneflow.LongTensor([3, 4]), oneflow.LongTensor([1])], pad_val=-100)
      tensor([[   3,    4],
              [   1, -100]])
  
  :param pad_val: 需要 pad 的值。
  :param ele_dtype: 用于检测当前 field 的元素类型是否可以转换为 :class:`oneflow.Tensor` 类型。
  :param dtype: 输出的数据的 dtype，。如 :class:`oneflow.long`, :class:`oneflow.float32`, :class:`int`, :class:`float` 等；
docstr: 将 ``batch_field`` 数据 转为 :class:`oneflow.Tensor` 并 pad 到相同长度。
  
  :param batch_field: 输入的某个 field 的 batch 数据。
  :param pad_val: 需要填充的值
  :param dtype: 数据的类型
docstr_tok: ["\u5c06","``","batch_field","``","\u6570\u636e","\u8f6c\u4e3a",":","class",":","`","oneflow.Tensor","`","\u5e76","pad","\u5230\u76f8\u540c\u957f\u5ea6\u3002",":","param","batch_field",":","\u8f93\u5165\u7684\u67d0\u4e2a","field","\u7684","batch","\u6570\u636e\u3002",":","param","pad_val",":","\u9700\u8981\u586b\u5145\u7684\u503c",":","param","dtype",":","\u6570\u636e\u7684\u7c7b\u578b"]
code: def pad(batch_field, pad_val=0, dtype=None):
      """
      将 ``batch_field`` 数据 转为 :class:`oneflow.Tensor` 并 pad 到相同长度。
  
      :param batch_field: 输入的某个 field 的 batch 数据。
      :param pad_val: 需要填充的值
      :param dtype: 数据的类型
      """
      device = None
      try:
          if not isinstance(batch_field[0], oneflow.Tensor):
              batch_field = [
                  oneflow.tensor(field.tolist(), dtype=dtype)
                  for field in batch_field
              ]
          else:
              batch_field = [field.to(dtype) for field in batch_field]
              device = batch_field[0].device
          if dtype is None:
              dtype = batch_field[0].dtype
      except AttributeError:
          raise RuntimeError(
              f"If the field is not a oneflow.Tensor (it is {type(batch_field[0])}), "
              f"it must have tolist() method."
          )
  
      shapes = [field.shape for field in batch_field]
      if len(batch_field) < 2:
          max_shape = [len(batch_field)] + list(shapes[0])
      else:
          max_shape = [len(batch_field)] + [
              max(*_) for _ in zip(*shapes)
          ]
  
      tensor = oneflow.full(max_shape, pad_val, dtype, device)
      for i, field in enumerate(batch_field):
          slices = (i,) + tuple(slice(0, s) for s in shapes[i])
          tensor[slices] = field
      return tensor
  
imports: from inspect import isclass
  import numpy
  from fastNLP.envs.imports import _NEED_IMPORT_ONEFLOW
  from fastNLP.envs.utils import _module_available
  from .padder import Padder
  from .utils import is_number_or_numpy_number, is_number, is_numpy_number_dtype, get_shape, is_numpy_generic_class
  from .exceptions import *
label_desc: Use image node_id 2 for calling the OneflowTensorPadder obj's underlying member method code with example usage: obj.pad(batch_field, pad_val, dtype) and returns: tensor