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 = {}
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}
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}