import tensorflow as tf

    initialization:
           Orthogonal weights: tf.initializers.orthogonal()
           Xavier :            tf.contrib.layers.xavier_initializer(seed=1)

    '''

    tf.set_random_seed(1)                   # defines the seed of the random number generator

    parameters={}
    L = len(layers)            # number of layers in the network
    first = activation[0]      #Activation of the first layer


    if first == 'esp':
        train = True
        init = tf.random_normal_initializer(stddev= stbeta)
        #init = tf.ones_initializer()

    else:
         train= False
         init = tf.ones_initializer()


    for l in range(1, L):
        parameters['w' + str(l)] = tf.get_variable('w' + str(l), [layers[l], layers[l-1]],dtype= 'float64' , initializer= tf.contrib.layers.xavier_initializer(seed=1) )
        parameters['b' + str(l)] = tf.get_variable('b' + str(l), [layers[l], 1],dtype= 'float64', initializer = tf.zeros_initializer())
        parameters['beta' + str(l)] = tf.get_variable('beta'+ str(l), [layers[l], 1], dtype= 'float64', initializer = init, trainable= train )


        assert(parameters['w' + str(l)].shape == (layers[l], layers[l-1]))
