<p>You can use both dropout and L2 regularization at the same time as is commonly done. They are quite different types of regularization. However, I would note that recent literature has suggested that batch normalization has replaced the need for dropout as noted in the original paper on batch normalization:</p>

<p><a href="https://arxiv.org/abs/1502.03167" rel="nofollow noreferrer">https://arxiv.org/abs/1502.03167</a></p>

<blockquote>
  <p>From the abstract: "It also acts as a regularizer, in some cases eliminating the need for Dropout."</p>
</blockquote>

<p>L2 regularization is typically applied when batchnorm is in use. There's nothing stopping you from applying all 3 forms of regularization, the statement above only indicates that you might not see an improvement by applying dropout when batchnorm is already in use.</p>

<p>There are generally optimal values for the amount of L2 regularization to apply and the dropout keep probability. These are hyperparameters you tune by trial and error or a hyperparameter search algorithm.</p>
Which kind of regularization use L2 regularization or dropout in multiRNNCell?
<p>I have been working on a project related with sequence to sequence autoencoder for time series forecasting. So, I have used <code>tf.contrib.rnn.MultiRNNCell</code> in encoder and decoder. I am confused in which strategy used in order to regularize my seq2seq model. Should I use L2 regularization in the loss or using DropOutWrapper (<code>tf.contrib.rnn.DropoutWrapper</code>) in the multiRNNCell? Or can I use both strategies ... L2 for weigths and bias (projection layer) and DropOutWrapper between cells in the multiRNNCell?
Thanks in advance :)</p>