class_docstr: Fully-connected + LSTM (s,a)-input Q-function.
  
  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.
      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","+","LSTM","(","s",",","a",")","-input","Q-function",".","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",".","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 __init__(
      self,
      n_dim_obs,
      n_dim_action,
      n_hidden_channels,
      n_hidden_layers,
      nonlinearity=F.relu,
      last_wscale=1.0,
  ):
      self.n_input_channels = n_dim_obs + n_dim_action
      self.n_hidden_layers = n_hidden_layers
      self.n_hidden_channels = n_hidden_channels
      self.nonlinearity = nonlinearity
      super().__init__()
      with self.init_scope():
          self.fc = MLP(
              self.n_input_channels,
              n_hidden_channels,
              [self.n_hidden_channels] * self.n_hidden_layers,
              nonlinearity=nonlinearity,
          )
          self.lstm = L.LSTM(n_hidden_channels, n_hidden_channels)
          self.out = L.Linear(
              n_hidden_channels, 1, initialW=LeCunNormal(last_wscale)
          )
  
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 1 to create a new FCLSTMSAQFunction object from inherited base classes: chainer, StateActionQFunction, RecurrentChainMixin with example: obj = FCLSTMSAQFunction(n_dim_obs, n_dim_action, n_hidden_channels, n_hidden_layers, nonlinearity, last_wscale)