class_docstr: Model from "Engaging Image Chat: Modeling Personality in Grounded Dialogue".
  
  See paper for more details: (https://arxiv.org/abs/1811.00945)
  
  An extension of the model from https://arxiv.org/abs/1810.10665; given
  an image, personality, and dialogue history, predicts the next utterance
  in a dialogue.
class_docstr_tok: ["Model","from","``","Engaging","Image","Chat",":","Modeling","Personality","in","Grounded","Dialogue","''",".","See","paper","for","more","details",":","(","https",":","\/\/arxiv.org\/abs\/1811.00945",")","An","extension","of","the","model","from","https",":","\/\/arxiv.org\/abs\/1810.10665",";","given","an","image",",","personality",",","and","dialogue","history",",","predicts","the","next","utterance","in","a","dialogue","."]
docstr: Report per-dialogue round metrics.
docstr_tok: ["Report","per-dialogue","round","metrics","."]
code: def report(self):
      """
      Report per-dialogue round metrics.
      """
      m = {}
      for k, v in self.metrics.items():
          if "num_samples" not in v:
              print(self.metrics)
              print(k)
              __import__("ipdb").set_trace()  # FIXME
          if v["num_samples"] > 0:
              m[f"{k}/hits@1/100"] = round_sigfigs(
                  v["hits@1/100"] / v["num_samples"], 4
              )
              m[f"{k}/loss"] = round_sigfigs(
                  v["loss"] / v["num_samples"], 4
              )
              if "med_rank" in v:
                  m[f"{k}/med_rank"] = np.median(v["med_rank"])
      return m
  
imports: from typing import Optional
  from parlai.core.params import ParlaiParser
  from parlai.core.opt import Opt
  from parlai.utils.misc import round_sigfigs
  from parlai.core.message import Message
  from .modules import TransresnetMultimodalModel
  from projects.personality_captions.transresnet.transresnet import TransresnetAgent
  from parlai.utils.io import PathManager
  import parlai.utils.torch
  import torch
  from torch import optim
  import random
  import numpy
  import tqdm
  from collections import deque
label_desc: Use image node_id 16 for calling the TransresnetMultimodalAgent obj's underlying member method code with example usage: obj.report() and returns: m