code: def step_preprocess(x, step, hparams):
      """Preprocess the input at the beginning of each step.
  
      Args:
        x: input tensor
        step: step
        hparams: model hyper-parameters
  
      Returns:
        preprocessed input.
  
      """
      original_channel_size = common_layers.shape_list(x)[-1]
  
      if hparams.add_position_timing_signal:
          x = add_position_timing_signal(x, step, hparams)
  
      if hparams.add_step_timing_signal:
          x = add_step_timing_signal(x, step, hparams)
  
      if (
          hparams.add_position_timing_signal
          or hparams.add_position_timing_signal
      ) and hparams.add_or_concat_timing_signal == "concat":
          # linear projection to the original dimension of x
          x = common_layers.dense(
              x, original_channel_size, activation=None, use_bias=False
          )
  
      if hparams.add_sru:
          x = common_layers.sru(x)
  
      return x
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import copy
  import functools
  from six.moves import range
  from tensor2tensor.layers import common_attention
  from tensor2tensor.layers import common_layers
  from tensor2tensor.models import transformer
  from tensor2tensor.utils import contrib
  from tensor2tensor.utils import expert_utils
  import tensorflow.compat.v1
label_desc: Use image node_id 19 for calling a global function with example usage: step_preprocess(x, step, hparams) and returns: x