class_docstr: Write me
      
code: def select_action(self, state, stochastic=False):
      batch = np.array([state])
      if self.processor is not None:
          batch = self.processor.process_state_batch(batch)
  
      action = self.model.predict_on_batch(batch).flatten()
      if stochastic or self.training:
          return np.random.choice(
              np.arange(self.nb_actions),
              p=np.exp(action) / np.sum(np.exp(action)),
          )
      return np.argmax(action)
  
imports: from __future__ import division
  from collections import deque
  from copy import deepcopy
  import numpy
  import keras.backend
  from keras.models import Model
  from rl.core import Agent
  from rl.util import *
label_desc: Use image node_id 8 for calling the CEMAgent obj's underlying member method code with example usage: obj.select_action(state, stochastic) and returns: np, np