def __init__(self, output_dim, nb_ctrl_sig, **kwargs):
    "\n        This layer is used to split the output of a previous Dense layer into\n        nb_ctrl_sig groups of size output_dim, and choose which group to provide\n        as output using a discrete control signal.\n        It takes as input two tensors, namely the output of the previous layer \n        and a column tensor with int32 or int64 values for the control signal.\n\n        The Dense input to this layer must be of shape (None, prev_output_dim),\n        where prev_output_dim = output_dim * nb_ctrl_sig.\n        No checks are done at runtime to ensure that the input to the layer is\n        correct, so it's better to double check.\n\n        An example usage of this layer may be:\n\n            input = Input(shape=(3,))\n            control = Input(shape=(1,), dtype='int32')\n            hidden = Dense(6)(i)  # output_dim == 2, nb_ctrl_sig == 3\n            output = Multiplexer(2, 3)([hidden, control])\n            model = Model(input=[input, control], output=output)\n            \n            ...\n            \n            x = randn(3)  # Input has size 3\n            ctrl = array([0, 1, 2])\n            \n            # Outputs the first two neurons of the Dense layer\n            model.predict([x, ctrl[0]])\n            \n            # Outputs the middle two neurons of the Dense layer\n            model.predict([x, ctrl[1]])\n            \n            # Outputs the last two neurons of the Dense layer\n            model.predict([x, ctrl[2]])\n            \n        # Arguments\n            output_dim: positive integer, dimensionality of the output space.\n            nb_ctrl_sig: positive integer, number of groups in which to split \n                the output of the previous layer. Must satisfy the relation:\n                input_size = nb_ctrl_sig * output_dim\n        \n        "
    self.output_dim = output_dim
    self.nb_ctrl_sig = nb_ctrl_sig
    super(Multiplexer, self).__init__(**kwargs)
This layer is used to split the output of a previous Dense layer into
nb_ctrl_sig groups of size output_dim, and choose which group to provide
as output using a discrete control signal.
It takes as input two tensors, namely the output of the previous layer 
and a column tensor with int32 or int64 values for the control signal.

The Dense input to this layer must be of shape (None, prev_output_dim),
where prev_output_dim = output_dim * nb_ctrl_sig.
No checks are done at runtime to ensure that the input to the layer is
correct, so it's better to double check.

An example usage of this layer may be:

    input = Input(shape=(3,))
    control = Input(shape=(1,), dtype='int32')
    hidden = Dense(6)(i)  # output_dim == 2, nb_ctrl_sig == 3
    output = Multiplexer(2, 3)([hidden, control])
    model = Model(input=[input, control], output=output)
    
    ...
    
    x = randn(3)  # Input has size 3
    ctrl = array([0, 1, 2])
    
    # Outputs the first two neurons of the Dense layer
    model.predict([x, ctrl[0]])
    
    # Outputs the middle two neurons of the Dense layer
    model.predict([x, ctrl[1]])
    
    # Outputs the last two neurons of the Dense layer
    model.predict([x, ctrl[2]])
    
# Arguments
    output_dim: positive integer, dimensionality of the output space.
    nb_ctrl_sig: positive integer, number of groups in which to split 
        the output of the previous layer. Must satisfy the relation:
        input_size = nb_ctrl_sig * output_dim
def __init__(self, output_dim, nb_ctrl_sig, **kwargs):
    "\n        This layer is used to split the output of a previous Dense layer into\n        nb_ctrl_sig groups of size output_dim, and choose which group to provide\n        as output using a discrete control signal.\n        It takes as input two tensors, namely the output of the previous layer \n        and a column tensor with int32 or int64 values for the control signal.\n\n        The Dense input to this layer must be of shape (None, prev_output_dim),\n        where prev_output_dim = output_dim * nb_ctrl_sig.\n        No checks are done at runtime to ensure that the input to the layer is\n        correct, so it's better to double check.\n\n        An example usage of this layer may be:\n\n            input = Input(shape=(3,))\n            control = Input(shape=(1,), dtype='int32')\n            hidden = Dense(6)(i)  # output_dim == 2, nb_ctrl_sig == 3\n            output = Multiplexer(2, 3)([hidden, control])\n            model = Model(input=[input, control], output=output)\n            \n            ...\n            \n            x = randn(3)  # Input has size 3\n            ctrl = array([0, 1, 2])\n            \n            # Outputs the first two neurons of the Dense layer\n            model.predict([x, ctrl[0]])\n            \n            # Outputs the middle two neurons of the Dense layer\n            model.predict([x, ctrl[1]])\n            \n            # Outputs the last two neurons of the Dense layer\n            model.predict([x, ctrl[2]])\n            \n        # Arguments\n            output_dim: positive integer, dimensionality of the output space.\n            nb_ctrl_sig: positive integer, number of groups in which to split \n                the output of the previous layer. Must satisfy the relation:\n                input_size = nb_ctrl_sig * output_dim\n        \n        "
    self.output_dim = output_dim
    self.nb_ctrl_sig = nb_ctrl_sig
    super(Multiplexer, self).__init__(**kwargs)