<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def random_shift(x, pad=(4, 4), mode='REFLECT'):
 """Pad a single image and then crop to the original size with a random offset."""

  assert mode in 'REFLECT SYMMETRIC CONSTANT'.split()
  assert x.get_shape().ndims == 3
  xp = tf.pad(x, [[pad[0], pad[0]], [pad[1], pad[1]], [0, 0]], mode)
  return tf.random_crop(xp, tf.shape(x))