code: def lstm_with_recurrent_dropout(hidden_size, keep_prob=0.5, **kwargs):
    
  
    lstm = LSTM(hidden_size, **kwargs)
    return RecurrentDropoutWrapper(lstm, LSTMState(keep_prob, None)), lstm
docs: LSTM with recurrent dropout.
  
    Args:
      hidden_size: the LSTM hidden size.
      keep_prob: the probability to keep an entry when applying dropout.
      **kwargs: Extra keyword arguments to pass to the LSTM.
  
    Returns:
      A tuple (train_lstm, test_lstm) where train_lstm is an LSTM with
      recurrent dropout enabled to be used for training and test_lstm
      is the same LSTM without recurrent dropout.