code: def check_dtypes(inputs):
      for value in inputs:
          if not hasattr(value, "dtype"):
              # It's not a valid tensor.
              return inputs
  
      if len(inputs) == 2:
          x, a = inputs
          e = None
      elif len(inputs) == 3:
          x, a, e = inputs
      else:
          return inputs
  
      if a.dtype in (tf.int32, tf.int64) and x.dtype in (
          tf.float16,
          tf.float32,
          tf.float64,
      ):
          warnings.warn(
              f"The adjacency matrix of dtype {a.dtype} is incompatible with the dtype "
              f"of the node features {x.dtype} and has been automatically cast to "
              f"{x.dtype}."
          )
          a = tf.cast(a, x.dtype)
  
      output = [_ for _ in [x, a, e] if _ is not None]
      return output
  
file_path: spektral/spektral/layers/convolutional/conv.py
imports: import warnings
  from functools import wraps
  import tensorflow
  from tensorflow.keras.layers import Layer
  from spektral.utils.keras import deserialize_kwarg, is_keras_kwarg, is_layer_kwarg, serialize_kwarg
label_desc: Use image node_id 2 for calling a global function with example usage: check_dtypes(inputs) and returns: output, inputs, inputs