class_docstr: Boltzmann exploration.
  
  Args:
      T (float): Temperature of Boltzmann distribution.
code: def select_action(self, t, greedy_action_func, action_value=None):
      assert action_value is not None
      assert isinstance(
          action_value, pfrl.action_value.DiscreteActionValue
      )
      n_actions = action_value.q_values.shape[1]
      with torch.no_grad():
          probs = (
              F.softmax(action_value.q_values / self.T, dim=-1)
              .cpu()
              .numpy()
              .ravel()
          )
      return np.random.choice(np.arange(n_actions), p=probs)
  
file_path: pfrl/pfrl/explorers/boltzmann.py
imports: import numpy
  import torch
  import torch.nn.functional
  import pfrl
label_desc: Use image node_id 2 for calling the Boltzmann obj's underlying member method code with example usage: obj.select_action(t, greedy_action_func, action_value) and returns: np