code: def get_timing_signal(length,
                        min_timescale=1,
                        max_timescale=1e4,
                        num_timescales=16):
    
    positions = to_float(tf.range(length))
    log_timescale_increment = (
        math.log(max_timescale / min_timescale) / (num_timescales - 1))
    inv_timescales = min_timescale * tf.exp(
        to_float(tf.range(num_timescales)) * -log_timescale_increment)
    scaled_time = tf.expand_dims(positions, 1) * tf.expand_dims(inv_timescales, 0)
    return tf.concat([tf.sin(scaled_time), tf.cos(scaled_time)], axis=1)
docs: Create Tensor of sinusoids of different frequencies.
  
    Args:
      length: Length of the Tensor to create, i.e. Number of steps.
      min_timescale: a float
      max_timescale: a float
      num_timescales: an int
  
    Returns:
      Tensor of shape (length, 2*num_timescales)