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, chainerrl.action_value.DiscreteActionValue
      )
      n_actions = action_value.q_values.shape[1]
      with chainer.no_backprop_mode():
          probs = chainer.cuda.to_cpu(
              F.softmax(action_value.q_values / self.T).array
          ).ravel()
      return np.random.choice(np.arange(n_actions), p=probs)
  
file_path: chainerrl/chainerrl/explorers/boltzmann.py
imports: import chainer
  from chainer import functions
  import numpy
  import chainerrl
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