class_docstr: Convolutional neural network followed by a Multilayer Perceptron.
  
  Combination of a CNN Model (optionally with max pooling) and an
  MLP Merge model. The CNN accepts the state as an input, while
  the MLP accepts the CNN's output and the action as inputs.
  
  Args:
      input_dim (Tuple[int, int, int]): Dimensions of unflattened input,
          which means [in_height, in_width, in_channels]. If the last 3
          dimensions of input_var is not this shape, it will be reshaped.
      filters (Tuple[Tuple[int, Tuple[int, int]], ...]): Number and dimension
          of filters. For example, ((3, (3, 5)), (32, (3, 3))) means there
          are two convolutional layers. The filter for the first layer have 3
          channels and its shape is (3 x 5), while the filter for the second
          layer have 32 channels and its shape is (3 x 3).
      strides (tuple[int]): The stride of the sliding window. For example,
          (1, 2) means there are two convolutional layers. The stride of the
          filter for first layer is 1 and that of the second layer is 2.
      hidden_sizes (tuple[int]): Output dimension of dense layer(s).
          For example, (32, 32) means the MLP of this q-function consists of
          two hidden layers, each with 32 hidden units.
      output_dim (int): Dimension of the network output.
      action_merge_layer (int): The index of layers at which to concatenate
          action inputs with the network. The indexing works like standard
          python list indexing. Index of 0 refers to the input layer
          (observation input) while an index of -1 points to the last
          hidden layer. Default parameter points to second layer from the
          end.
      name (str): Model name, also the variable scope.
      padding (str): The type of padding algorithm to use,
          either 'SAME' or 'VALID'.
      max_pooling (bool): Boolean for using max pooling layer or not.
      pool_shapes (tuple[int]): Dimension of the pooling layer(s). For
          example, (2, 2) means that all the pooling layers have
          shape (2, 2).
      pool_strides (tuple[int]): The strides of the pooling layer(s). For
          example, (2, 2) means that all the pooling layers have
          strides (2, 2).
      cnn_hidden_nonlinearity (callable): Activation function for
          intermediate dense layer(s) in the CNN. It should return a
          tf.Tensor. Set it to None to maintain a linear activation.
      cnn_hidden_w_init (callable): Initializer function for the weight of
          intermediate dense layer(s) in the CNN. Function should return a
          tf.Tensor.
      cnn_hidden_b_init (callable): Initializer function for the bias of
          intermediate dense layer(s) in the CNN. Function should return a
          tf.Tensor.
      hidden_nonlinearity (callable): Activation function for intermediate
          dense layer(s) in the MLP. It should return a tf.Tensor. Set it to
          None to maintain a linear activation.
      hidden_w_init (callable): Initializer function for the weight
          of intermediate dense layer(s) in the MLP. The function should
          return a tf.Tensor.
      hidden_b_init (callable): Initializer function for the bias
          of intermediate dense layer(s) in the MLP. The function should
          return a tf.Tensor.
      output_nonlinearity (callable): Activation function for output dense
          layer in the MLP. It should return a tf.Tensor. Set it to None
          to maintain a linear activation.
      output_w_init (callable): Initializer function for the weight
          of output dense layer(s) in the MLP. The function should return
          a tf.Tensor.
      output_b_init (callable): Initializer function for the bias
          of output dense layer(s) in the MLP. The function should return
          a tf.Tensor.
      layer_normalization (bool): Bool for using layer normalization or not.
class_docstr_tok: ["Convolutional","neural","network","followed","by","a","Multilayer","Perceptron",".","Combination","of","a","CNN","Model","(","optionally","with","max","pooling",")","and","an","MLP","Merge","model",".","The","CNN","accepts","the","state","as","an","input",",","while","the","MLP","accepts","the","CNN","'s","output","and","the","action","as","inputs",".","Args",":","input_dim","(","Tuple","[","int",",","int",",","int","]",")",":","Dimensions","of","unflattened","input",",","which","means","[","in_height",",","in_width",",","in_channels","]",".","If","the","last","3","dimensions","of","input_var","is","not","this","shape",",","it","will","be","reshaped",".","filters","(","Tuple","[","Tuple","[","int",",","Tuple","[","int",",","int","]","]",",","...","]",")",":","Number","and","dimension","of","filters",".","For","example",",","(","(","3",",","(","3",",","5",")",")",",","(","32",",","(","3",",","3",")",")",")","means","there","are","two","convolutional","layers",".","The","filter","for","the","first","layer","have","3","channels","and","its","shape","is","(","3","x","5",")",",","while","the","filter","for","the","second","layer","have","32","channels","and","its","shape","is","(","3","x","3",")",".","strides","(","tuple","[","int","]",")",":","The","stride","of","the","sliding","window",".","For","example",",","(","1",",","2",")","means","there","are","two","convolutional","layers",".","The","stride","of","the","filter","for","first","layer","is","1","and","that","of","the","second","layer","is","2.","hidden_sizes","(","tuple","[","int","]",")",":","Output","dimension","of","dense","layer","(","s",")",".","For","example",",","(","32",",","32",")","means","the","MLP","of","this","q-function","consists","of","two","hidden","layers",",","each","with","32","hidden","units",".","output_dim","(","int",")",":","Dimension","of","the","network","output",".","action_merge_layer","(","int",")",":","The","index","of","layers","at","which","to","concatenate","action","inputs","with","the","network",".","The","indexing","works","like","standard","python","list","indexing",".","Index","of","0","refers","to","the","input","layer","(","observation","input",")","while","an","index","of","-1","points","to","the","last","hidden","layer",".","Default","parameter","points","to","second","layer","from","the","end",".","name","(","str",")",":","Model","name",",","also","the","variable","scope",".","padding","(","str",")",":","The","type","of","padding","algorithm","to","use",",","either","'SAME","'","or","'VALID","'",".","max_pooling","(","bool",")",":","Boolean","for","using","max","pooling","layer","or","not",".","pool_shapes","(","tuple","[","int","]",")",":","Dimension","of","the","pooling","layer","(","s",")",".","For","example",",","(","2",",","2",")","means","that","all","the","pooling","layers","have","shape","(","2",",","2",")",".","pool_strides","(","tuple","[","int","]",")",":","The","strides","of","the","pooling","layer","(","s",")",".","For","example",",","(","2",",","2",")","means","that","all","the","pooling","layers","have","strides","(","2",",","2",")",".","cnn_hidden_nonlinearity","(","callable",")",":","Activation","function","for","intermediate","dense","layer","(","s",")","in","the","CNN",".","It","should","return","a","tf.Tensor",".","Set","it","to","None","to","maintain","a","linear","activation",".","cnn_hidden_w_init","(","callable",")",":","Initializer","function","for","the","weight","of","intermediate","dense","layer","(","s",")","in","the","CNN",".","Function","should","return","a","tf.Tensor",".","cnn_hidden_b_init","(","callable",")",":","Initializer","function","for","the","bias","of","intermediate","dense","layer","(","s",")","in","the","CNN",".","Function","should","return","a","tf.Tensor",".","hidden_nonlinearity","(","callable",")",":","Activation","function","for","intermediate","dense","layer","(","s",")","in","the","MLP",".","It","should","return","a","tf.Tensor",".","Set","it","to","None","to","maintain","a","linear","activation",".","hidden_w_init","(","callable",")",":","Initializer","function","for","the","weight","of","intermediate","dense","layer","(","s",")","in","the","MLP",".","The","function","should","return","a","tf.Tensor",".","hidden_b_init","(","callable",")",":","Initializer","function","for","the","bias","of","intermediate","dense","layer","(","s",")","in","the","MLP",".","The","function","should","return","a","tf.Tensor",".","output_nonlinearity","(","callable",")",":","Activation","function","for","output","dense","layer","in","the","MLP",".","It","should","return","a","tf.Tensor",".","Set","it","to","None","to","maintain","a","linear","activation",".","output_w_init","(","callable",")",":","Initializer","function","for","the","weight","of","output","dense","layer","(","s",")","in","the","MLP",".","The","function","should","return","a","tf.Tensor",".","output_b_init","(","callable",")",":","Initializer","function","for","the","bias","of","output","dense","layer","(","s",")","in","the","MLP",".","The","function","should","return","a","tf.Tensor",".","layer_normalization","(","bool",")",":","Bool","for","using","layer","normalization","or","not","."]
docstr: Network input spec.
  
  Return:
      list[str]: List of key(str) for the network inputs.
docstr_tok: ["Network","input","spec",".","Return",":","list","[","str","]",":","List","of","key","(","str",")","for","the","network","inputs","."]
code: def network_input_spec(self):
      """Network input spec.
  
      Return:
          list[str]: List of key(str) for the network inputs.
  
      """
      return ["state", "action"]
  
file_path: garage/src/garage/tf/models/cnn_mlp_merge_model.py
imports: import tensorflow
  from garage.experiment import deterministic
  from garage.tf.models.cnn_model import CNNModel
  from garage.tf.models.cnn_model_max_pooling import CNNModelWithMaxPooling
  from garage.tf.models.mlp_merge_model import MLPMergeModel
  from garage.tf.models.model import Model
label_desc: Use image node_id 2 for calling the CNNMLPMergeModel obj's underlying member method code with example usage: obj.network_input_spec() and returns: list