import tensorflow as tf

    tf.set_random_seed(random_seed) #make reproducible results
    
    input_size_x += input_size_y
    
    """Define the graph inputs"""
    batch_size = tf.placeholder(tf.int32, [], name='batch_size')
    x = tf.placeholder(tf.float32, [None, num_steps, input_size_x], name='x')
    y = tf.placeholder(tf.float32, [None, num_steps, input_size_y], name='y')
    input_prob = tf.placeholder(tf.float32, name='input_prob')
    state_prob = tf.placeholder(tf.float32,name='state_prob')
    output_prob = tf.placeholder(tf.float32,name='output_prob')
    rnn_inputs = x

    """Define a single cell with variational dropout"""
    def get_a_cell(state_size,input_prob,state_prob,num_input):
        if cell_type == 'LSTM':
