class_docstr: Fully-connected (s,a)-input Q-function with late action input.
  
  Actions are not included until the second hidden layer and not normalized.
  This architecture is used in the DDPG paper:
  http://arxiv.org/abs/1509.02971
  
  Args:
      n_dim_obs (int): Number of dimensions of observation space.
      n_dim_action (int): Number of dimensions of action space.
      n_hidden_channels (int): Number of hidden channels.
      n_hidden_layers (int): Number of hidden layers. It must be greater than
          or equal to 1.
      nonlinearity (callable): Nonlinearity between layers. It must accept a
          Variable as an argument and return a Variable with the same shape.
          Nonlinearities with learnable parameters such as PReLU are not
          supported.
      last_wscale (float): Scale of weight initialization of the last layer.
class_docstr_tok: ["Fully-connected","(","s",",","a",")","-input","Q-function","with","late","action","input",".","Actions","are","not","included","until","the","second","hidden","layer","and","not","normalized",".","This","architecture","is","used","in","the","DDPG","paper",":","http",":","\/\/arxiv.org\/abs\/1509.02971","Args",":","n_dim_obs","(","int",")",":","Number","of","dimensions","of","observation","space",".","n_dim_action","(","int",")",":","Number","of","dimensions","of","action","space",".","n_hidden_channels","(","int",")",":","Number","of","hidden","channels",".","n_hidden_layers","(","int",")",":","Number","of","hidden","layers",".","It","must","be","greater","than","or","equal","to","1.","nonlinearity","(","callable",")",":","Nonlinearity","between","layers",".","It","must","accept","a","Variable","as","an","argument","and","return","a","Variable","with","the","same","shape",".","Nonlinearities","with","learnable","parameters","such","as","PReLU","are","not","supported",".","last_wscale","(","float",")",":","Scale","of","weight","initialization","of","the","last","layer","."]
code: def __call__(self, state, action):
      h = self.nonlinearity(self.obs_mlp(state))
      h = F.concat((h, action), axis=1)
      return self.mlp(h)
  
imports: import chainer
  from chainer import functions
  from chainer.initializers import LeCunNormal
  from chainer import links
  from chainerrl.links.mlp import MLP
  from chainerrl.links.mlp_bn import MLPBN
  from chainerrl.q_function import StateActionQFunction
  from chainerrl.recurrent import RecurrentChainMixin
label_desc: Use image node_id 2 for calling the FCLateActionSAQFunction obj's underlying member method code with example usage: obj.__call__(state, action) and returns: self