code: def _get_rnn_layer(mode, num_layers, input_size, hidden_size, dropout, weight_dropout):
      
      if mode == 'rnn_relu':
          rnn_block = functools.partial(rnn.RNN, activation='relu')
      elif mode == 'rnn_tanh':
          rnn_block = functools.partial(rnn.RNN, activation='tanh')
      elif mode == 'lstm':
          rnn_block = rnn.LSTM
      elif mode == 'gru':
          rnn_block = rnn.GRU
  
      block = rnn_block(hidden_size, num_layers, dropout=dropout,
                        input_size=input_size)
  
      if weight_dropout:
          apply_weight_drop(block, '.*h2h_weight', rate=weight_dropout)
  
      return block
docs: create rnn layer given specs