code: def _absolute_position_to_relative_position_unmasked(x):
    
    batch, heads, length, _ = common_layers.shape_list(x)
    # padd along column
    x = tf.pad(x, [[0, 0], [0, 0], [0, 0], [0, length-1]])
    x_flat = tf.reshape(x, [batch, heads, length**2 + length*(length -1)])
    # add 0's in the beginning that will skew the elements after reshape
    x_flat = tf.pad(x_flat, [[0, 0], [0, 0], [length, 0]])
    x = tf.reshape(x_flat, [batch, heads, length, 2*length])
    x = tf.slice(x, [0, 0, 0, 1], [batch, heads, length,
                                   2*length -1])
    return x
docs: Helper function for dot_product_unmasked_self_attention_relative_v2.
  
    Rearrange an attention logits or weights Tensor.
  
    The dimensions of the input represent:
    [batch, heads, query_position, memory_position]
  
    The dimensions of the output represent:
    [batch, heads, query_position, memory_position - query_position + length - 1]
  
    Only works with unmasked_attention.
  
    Args:
      x: a Tensor with shape [batch, heads, length, length]
  
    Returns:
      a Tensor with shape [batch, heads, length, 2*length-1]