def orthonormal_VanillaLSTMBuilder(lstm_layers, input_dims, lstm_hiddens, dropout_x=<NUM_LIT:0.>, dropout_h=<NUM_LIT:0.>, debug=False):
assert lstm_layers == <NUM_LIT:1>, '<STR_LIT>'<EOL>W = orthonormal_initializer(lstm_hiddens, lstm_hiddens + input_dims, debug)<EOL>W_h, W_x = W[:, :lstm_hiddens], W[:, lstm_hiddens:]<EOL>b = nd.zeros((<NUM_LIT:4> * lstm_hiddens,))<EOL>b[lstm_hiddens:<NUM_LIT:2> * lstm_hiddens] = -<NUM_LIT:1.0><EOL>lstm_cell = rnn.LSTMCell(input_size=input_dims, hidden_size=lstm_hiddens,<EOL>i2h_weight_initializer=mx.init.Constant(np.concatenate([W_x] * <NUM_LIT:4>, <NUM_LIT:0>)),<EOL>h2h_weight_initializer=mx.init.Constant(np.concatenate([W_h] * <NUM_LIT:4>, <NUM_LIT:0>)),<EOL>h2h_bias_initializer=mx.init.Constant(b))<EOL>wrapper = VariationalDropoutCell(lstm_cell, drop_states=dropout_h)<EOL>return wrapper<EOL>
Build a standard LSTM cell, with variational dropout,
    with weights initialized to be orthonormal (https://arxiv.org/abs/1312.6120)

    Parameters
    ----------
    lstm_layers : int
        Currently only support one layer
    input_dims : int
        word vector dimensions
    lstm_hiddens : int
        hidden size
    dropout_x : float
        dropout on inputs, not used in this implementation, see `biLSTM` below
    dropout_h : float
        dropout on hidden states
    debug : bool
        set to True to skip orthonormal initialization

    Returns
    -------
    lstm_cell : VariationalDropoutCell
        A LSTM cell