Пример #1
0
    def __init__(self, data):
        super(Model, self).__init__()

        self.train_data = data
        self.num_node_feat = data.num_node_feat

        # Create layers.
        # for _ in range(n_outputs): TODO: finish real multiple-choice learning
        self.layers = create_layers(self, 'layer', FLAGS.layer_num)
        assert (len(self.layers) > 0)
        self._print_layers(None, self.layers)

        # Create layers for branches
        # (except for the main branch which has been created above).
        bnames = get_branch_names()
        if bnames:
            for bname in bnames:
                blayers = create_layers(
                    self, bname,
                    get_flag('{}_layer_num'.format(bname), check=True))
                setattr(self, bname, blayers)  # so that print(model) can print
                self._print_layers(bname, getattr(self, bname))

        # Map layer object to output.
        # Some layers may not register its output to this dictionary.
        # Currently only NodeEmbedding layers store its output.
        # This dictionary does NOT get cleaned up after each iteration.
        self.layer_output = {}
Пример #2
0
    def _build(self):
        # Create layers according to FLAGS.
        self.layers = create_layers(self)
        assert (len(self.layers) > 0)
        print('Created {} layers: {}'.format(
            len(self.layers), ', '.join(l.get_name() for l in self.layers)))

        # Build the siamese model for train and val_test, respectively,
        for tvt in ['train', 'val_test']:
            print(tvt)
            # Go through each layer except the last one.
            acts = [self._get_ins(self.layers[0], tvt)]
            outs = None
            for k, layer in enumerate(self.layers):
                ins = self._proc_ins(acts[-1], k, layer, tvt)
                print(layer.name)
                outs = layer(ins)
                outs = self._proc_outs(outs, k, layer, tvt)
                acts.append(outs)
            if tvt == 'train':
                self.train_outputs = outs
                self.train_acts = acts
            else:
                self.val_test_output = outs
                self.val_test_pred_score = self._val_test_pred_score()
                self.val_test_acts = acts

        self.node_embeddings = self._get_last_gcn_layer_outputs('val_test')

        # Store model variables for easy access.
        variables = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES)
        self.vars = {var.name: var for var in variables}
Пример #3
0
    def _build(self):
        if logging_enabled == True:
            print("- Entered model::Model::_build Private Method")

        # Create layers
        self.layers = create_layers(self, 'layer', ec.layer_num)
        assert (len(self.layers) > 0)

        print('\ninfo: {} layers have been Created:\n\t{}\n'.format(
            len(self.layers), ',\n\t'.join(l.get_name() for l in self.layers)))

        self.gembd_layer_id = self._gemb_layer_id()
        print('info: index (0-based) of the Graph Embedding Layer: {}'.format(
            self.gembd_layer_id))

        # Build the siamese model for train and val_test, respectively,
        for tvt in ['train', 'val_test']:
            # Go through each layer except the last one.
            acts = [self._get_ins(self.layers[0], tvt)]
            outs = None

            if tvt == 'train':
                print('\n* Training:')
            else:
                print('\n* Validation Testing:')

            for k, layer in enumerate(self.layers):
                print("\t", layer.name)
                ins = self._proc_ins(acts[-1], k, layer, tvt)
                outs = layer(ins)
                outs = self._proc_outs(outs, k, layer, tvt)
                acts.append(outs)

            if tvt == 'train':
                self.train_outputs = outs
                self.train_acts = acts
                print("train_outputs::outs:\n", self.train_outputs)
                print("train_outputs::acts:\n", self.train_acts)
            else:
                self.val_test_output = outs
                self.val_test_pred_score = self._val_test_pred_score()
                self.val_test_acts = acts

                print("val_test_output::outs:\n", self.val_test_output)
                print("val_test_pred_score::acts:\n", self.val_test_pred_score)
                print("val_test_acts::acts:\n", self.val_test_acts)

        self.node_embeddings = self._get_all_gcn_layer_outputs('val_test')

        # Store model variables for easy access.
        variables = tf.compat.v1.get_collection(
            tf.compat.v1.GraphKeys.GLOBAL_VARIABLES)
        self.vars = {var.name: var for var in variables}