def eval()

in summarize_from_feedback/policy.py [0:0]


    def eval(self, query_tokens, response_tokens, eval_fn=None, **kwargs):
        """
        :return: A dict with structure:
            value: [batch, num_responses, response_length]
            eval_stats: dict of stats returned by eval_fn
        """
        if self.task_hparams is not None:
            assert query_tokens.size(1) == self.task_hparams.query.length, f"{query_tokens.size()}"
            assert (
                response_tokens.size(2) == self.task_hparams.response.length
            ), f"{response_tokens.size()}"
        assert query_tokens.size(0) == response_tokens.size(0)
        if eval_fn is not None:
            eval_fn = _wrap_policy_fn(
                eval_fn, list(self.heads) + (["logits"] if self.logit_head else [])
            )
        ret = self._eval(query_tokens, response_tokens[:, :, :-1], eval_fn=eval_fn, **kwargs)
        for key in self.heads:
            ret[key] = ret[key]["response"]
        return ret