def hybrid_forward(self, F, inputs, states=None, mask=None):<EOL>
type_representation = self._elmo_char_encoder(inputs)<EOL>type_representation = type_representation.transpose(axes=(<NUM_LIT:1>, <NUM_LIT:0>, <NUM_LIT:2>))<EOL>lstm_outputs, states = self._elmo_lstm(type_representation, states, mask)<EOL>lstm_outputs = lstm_outputs.transpose(axes=(<NUM_LIT:0>, <NUM_LIT:2>, <NUM_LIT:1>, <NUM_LIT:3>))<EOL>type_representation = type_representation.transpose(axes=(<NUM_LIT:1>, <NUM_LIT:0>, <NUM_LIT:2>))<EOL>output = F.concat(*[type_representation, type_representation], dim=-<NUM_LIT:1>)<EOL>if mask is not None:<EOL><INDENT>output = output * mask.expand_dims(axis=-<NUM_LIT:1>)<EOL><DEDENT>output = [output]<EOL>output.extend([layer_activations.squeeze(axis=<NUM_LIT:0>) for layer_activations<EOL>in F.split(lstm_outputs, self._num_layers, axis=<NUM_LIT:0>)])<EOL>return output, states<EOL>
Parameters
----------
inputs : NDArray
    Shape (batch_size, sequence_length, max_character_per_token)
    of character ids representing the current batch.
states : (list of list of NDArray, list of list of NDArray)
    The states. First tuple element is the forward layer states, while the second is
    the states from backward layer. Each is a list of states for each layer.
    The state of each layer has a list of two initial tensors with
    shape (batch_size, proj_size) and (batch_size, hidden_size).
mask :  NDArray
    Shape (batch_size, sequence_length) with sequence mask.

Returns
-------
output : list of NDArray
    A list of activations at each layer of the network, each of shape
    (batch_size, sequence_length, embedding_size)
states : (list of list of NDArray, list of list of NDArray)
    The states. First tuple element is the forward layer states, while the second is
    the states from backward layer. Each is a list of states for each layer.
    The state of each layer has a list of two initial tensors with
    shape (batch_size, proj_size) and (batch_size, hidden_size).