'Constructor.
:param num_layers: number of LSTM layers
:param num_hidden: number of LSTM units
:param vocab_size: size of the vocabulary
:param batch_size: size of each mini batch
:param num_steps: number of unrolled steps of LSTM
:param num_epochs: number of training epochs
:param learning_rate: learning rate parameter
:param dropout: probability of the dropout layer
:param init_scale: initial scale of the weights
:param max_grad_norm: maximum permissible norm of the gradient
:param lr_decay: learning rate decay for each epoch after num_epochs/3'

def __init__(self, num_layers=2, num_hidden=200, vocab_size=10000, batch_size=20, num_steps=35, num_epochs=10, learning_rate=1.0, dropout=0.5, init_scale=0.05, max_grad_norm=5, lr_decay=0.8):

    self.num_layers = num_layers
    self.num_hidden = num_hidden
    self.vocab_size = vocab_size
    self.batch_size = batch_size
    self.num_steps = num_steps
    self.num_epochs = num_epochs
    self.learning_rate = learning_rate
    self.dropout = dropout
    self.init_scale = init_scale
    self.max_grad_norm = max_grad_norm
    self.lr_decay = lr_decay
    self.initializer = tf.random_uniform_initializer((- self.init_scale), self.init_scale)
