code: def image2d(
      math_engine,
      batch_len,
      batch_width,
      height,
      width,
      channels,
      dtype="float32",
  ):
      """Creates a blob with two-dimensional multi-channel images.
  
      :param neoml.MathEngine.MathEngine math_engine: the math engine that works with this blob.
  
      :param batch_len: the **BatchLength** dimension of the new blob.
      :type batch_len: int, > 0
  
      :param batch_width: the **BatchWidth** dimension of the new blob.
      :type batch_width: int, > 0
  
      :param height: the image height.
      :type height: int, > 0
  
      :param width: the image width.
      :type width: int, > 0
  
      :param channels: the number of channels in the image format.
      :type channels: int, > 0
  
      :param dtype: the type of data in the blob.
      :type dtype: str, {"float32", "int32"}, default="float32"
      """
      if dtype != "float32" and dtype != "int32":
          raise ValueError(
              "The `dtype` must be one of {`float32`, `int32`}."
          )
      if batch_len < 1:
          raise ValueError("The `batch_len` must be > 0.")
      if batch_width < 1:
          raise ValueError("The `batch_width` must be > 0.")
      if height < 1:
          raise ValueError("The `height` must be > 0.")
      if width < 1:
          raise ValueError("The `width` must be > 0.")
      if channels < 1:
          raise ValueError("The `channels` must be > 0.")
  
      shape = np.array(
          (batch_len, batch_width, 1, height, width, 1, channels),
          dtype=np.int32,
          copy=False,
      )
  
      return Blob(
          PythonWrapper.tensor(math_engine._internal, shape, dtype)
      )
  
imports: import neoml
  import neoml.PythonWrapper
  import neoml.MathEngine
  import numpy
label_desc: Use image node_id 8 for calling a global function with example usage: image2d(math_engine, batch_len, batch_width, height, width, channels, dtype) and returns: Blob