code: def _check_tensor_info(*tensors, size, dtype, device):
      """Check if sizes, dtypes, and devices of input tensors all match prescribed values."""
      tensors = list(filter(torch.is_tensor, tensors))
  
      if dtype is None and len(tensors) == 0:
          dtype = torch.get_default_dtype()
      if device is None and len(tensors) == 0:
          device = torch.device("cpu")
  
      sizes = [] if size is None else [size]
      sizes += [t.shape for t in tensors]
  
      dtypes = [] if dtype is None else [dtype]
      dtypes += [t.dtype for t in tensors]
  
      devices = [] if device is None else [device]
      devices += [t.device for t in tensors]
  
      if len(sizes) == 0:
          raise ValueError(
              "Must either specify `size` or pass in `W` or `H` to implicitly define the size."
          )
  
      if not all(i == sizes[0] for i in sizes):
          raise ValueError(
              "Multiple sizes found. Make sure `size` and `W` or `H` are consistent."
          )
      if not all(i == dtypes[0] for i in dtypes):
          raise ValueError(
              "Multiple dtypes found. Make sure `dtype` and `W` or `H` are consistent."
          )
      if not all(i == devices[0] for i in devices):
          raise ValueError(
              "Multiple devices found. Make sure `device` and `W` or `H` are consistent."
          )
  
      # Make sure size is a tuple (not a torch.Size) for neat repr-printing purposes.
      return tuple(sizes[0]), dtypes[0], devices[0]
  
imports: import math
  import trampoline
  import warnings
  import numpy
  import torch
  from .None import brownian_base
  from ..settings import LEVY_AREA_APPROXIMATIONS
  from ..types import Scalar, Optional, Tuple, Union, Tensor
label_desc: Use image node_id 4 for calling a global function with example usage: _check_tensor_info() and returns: tuple,  dtypes,  devices