import tensorflow as tf

        with tf.variable_scope("model"):

            # ------------------------------------------------
            # Random initialization Load weights from weights path
            # for Initial state, Weight matrices, and bias weights
            # ------------------------------------------------
            if self.load_weights_path is None:
                # random initializations
                init_state_initializer = tf.random_normal_initializer(mean=0.1, stddev=0.01)
                W_in_initializer = tf.constant_initializer(
                                    0.1 * np.random.uniform(-1, 1, size=(self.N_rec, self.N_in)))
                W_rec_initializer = tf.constant_initializer(self.initial_W())
                W_out_initializer = tf.constant_initializer(
                                    0.1 * np.random.uniform(-1, 1, size=(self.N_out, self.N_rec)))
                b_rec_initializer = tf.constant_initializer(0.0)
                b_out_initializer = tf.constant_initializer(0.0)
            else:
                print("Loading Weights")
                weights = np.load(self.load_weights_path)
                init_state_initializer = tf.constant_initializer(weights['init_state'])
                W_in_initializer = tf.constant_initializer(weights['W_in'])
                W_rec_initializer = tf.constant_initializer(weights['W_rec'])
                W_out_initializer = tf.constant_initializer(weights['W_out'])
                b_rec_initializer = tf.constant_initializer(weights['b_rec'])
                b_out_initializer = tf.constant_initializer(weights['b_out'])
                
                self.input_connectivity_mask = weights['input_Connectivity']
                self.recurrent_connectivity_mask = weights['rec_Connectivity']
