code: def test__dense_to_action_dict(self):
      trainer = self._construct_trainer()
      dense = torch.rand(trainer.num_actions)
      retval = trainer._dense_to_action_dict(dense)
      self.assertEqual(len(retval), trainer.num_actions)
      for i, a in enumerate(self.params.actions):
          self.assertTrue(a in retval)
          self.assertTrue(torch.isclose(retval[a], dense[i]))
  
imports: import unittest
  import torch
  from reagent.core.parameters import EvaluationParameters, RLParameters
  from reagent.core.types import DiscreteDqnInput, ExtraData, FeatureData
  from reagent.evaluation.evaluation_data_page import EvaluationDataPage
  from reagent.evaluation.evaluator import get_metrics_to_score
  from reagent.models.dqn import FullyConnectedDQN
  from reagent.training.dqn_trainer import DQNTrainer
  from reagent.training.parameters import DQNTrainerParameters
  from reagent.workflow.types import RewardOptions
label_desc: Use image node_id 10 for calling the TestDQN obj's underlying member method code with example usage: obj.test__dense_to_action_dict() without return types