import tensorflow as tf

            elif model_name in ('gcn_vae', 'linear_vae', 'deep_gcn_vae'):
                opt = OptimizerVAE(preds = model.reconstructions,
                                   labels = tf.reshape(tf.sparse_tensor_to_dense(placeholders['adj_orig'],
                                                                                 validate_indices = False), [-1]),
                                   model = model,
                                   num_nodes = num_nodes,
                                   pos_weight = pos_weight,
                                   norm = norm)

        # Normalization and preprocessing on adjacency matrix
        adj_norm = preprocess_graph(adj)
        adj_label = sparse_to_tuple(adj + sp.eye(adj.shape[0]))

        # Initialize TF session
        sess = tf.Session()
        sess.run(tf.global_variables_initializer())

        # Model training
        print(f"Training {model_name}...")

        t = time.time()
        print_every = 50
        for epoch in range(FLAGS.epochs):
            # Flag to compute running time for each epoch
            # Construct feed dictionary
            feed_dict = construct_feed_dict(adj_norm, adj_label, features,
                                            placeholders)
            feed_dict.update({placeholders['dropout']: FLAGS.dropout})
            # Weights update
            outs = sess.run([opt.opt_op, opt.cost, opt.accuracy],
