'Autoregressive eval.
Quadratic time in decode_length.
Args:
features: an map of string to `Tensor`
decode_length: an integer.  How many additional timesteps to decode.
last_position_only: a boolean, speed-up by computing last position only.
Returns:
sharded_logits: a list of `Tensor`s. Assumes one datashard.
losses: a dictionary: {loss-name (string): floating point `Scalar`}.
Contains a single key "training".'

def eval_autoregressive(self, features=None, decode_length=50, last_position_only=False):

    (_, logits, losses) = self._greedy_infer(features, decode_length=decode_length, last_position_only=last_position_only)
    return ([logits], losses)
