Regularization for LSTM in tensorflow

BiBi picture BiBi · Jun 1, 2016 · Viewed 11.5k times · Source

Tensorflow offers a nice LSTM wrapper.

rnn_cell.BasicLSTM(num_units, forget_bias=1.0, input_size=None,
           state_is_tuple=False, activation=tanh)

I would like to use regularization, say L2 regularization. However, I don't have direct access to the different weight matrices used in the LSTM cell, so I cannot explicitly do something like

loss = something + beta * tf.reduce_sum(tf.nn.l2_loss(weights))

Is there a way to access the matrices or use regularization somehow with LSTM?

Answer

keveman picture keveman · Jun 1, 2016

tf.trainable_variables gives you a list of Variable objects that you can use to add the L2 regularization term. Note that this add regularization for all variables in your model. If you want to restrict the L2 term only to a subset of the weights, you can use the name_scope to name your variables with specific prefixes, and later use that to filter the variables from the list returned by tf.trainable_variables.