'Create one input Tensor for each expert.
Args:
inp: a list of length num_datashards `Tensor`s with shapes
`[batch_size[d], <extra_input_dims>]`.
Returns:
a list of `num_experts` `Tensor`s with shapes
`[num_examples[i], <extra_input_dims>]`.'

def Dispatch(self, inp):

    dispatched = Parallel(self._datashard_devices, (lambda a, b: a.Dispatch(b)), self._dispatchers, inp)
    ret = Parallel(self._expert_devices, tf.concat, TransposeListOfLists(dispatched), 0)
    if (ret[0].dtype == tf.float32):
        ret = Parallel(self._expert_devices, ConvertGradientToTensor, ret)
    return ret
