neural_fingerprints.py 文件源码

python
阅读 29 收藏 0 点赞 0 评论 0

项目:neural_fingerprints_tf 作者: fllinares 项目源码 文件源码
def build_graph_fingerprint(self):
        # Total number of graph convolution layers
        n_layers = self.getitem('config', 'model/graph_conv_layers/n_layers')

        # Create output dictionaries for graph convolutional layers and fingerprint output layers
        self.output['graph_conv_layers'] = {}
        self.output['fingerprint_output_layers'] = {}

        # Input node embeddings
        node_emb = self.input['node_features']

        # Pre-compute the sum of the feature vectors labelling all edges connected to each node (if necessary)
        self.output['graph_conv_layers']['edge_emb'] = None
        if self.getitem('config', 'model/input/edge_features/use') and self.num_edge_features > 0:
            self.output['graph_conv_layers']['edge_emb'] = tf.sparse_tensor_dense_matmul(self.input['inc_mat'],
                                                                                         self.input['edge_features'])
        # Compute node and graph level fingerprints for the input layer
        graph_fp, node_fp = self.output_embedding_layer(node_emb, 'output_embedding_layer_0')

        # List of node-level embeddings per layer (output of graph convolutional layers), node-level fingerprints per
        # layer (per-node output of fingerprint output layers) and graph-level fingerprints per layer (total output of
        # fingerprint output layers)
        self.output['graph_conv_layers']['node_emb'] = [node_emb]
        self.output['fingerprint_output_layers']['node_fp'] = [node_fp]
        self.output['fingerprint_output_layers']['graph_fp'] = [graph_fp]

        # Create all graph convolutional layers and their respective fingerprint output layers
        for layer_idx in xrange(1, n_layers+1):
            node_emb = self.graph_convolution_layer(node_emb=self.output['graph_conv_layers']['node_emb'][-1],
                                                    scope='graph_conv_layer_%d' % layer_idx,
                                                    edge_emb=self.output['graph_conv_layers']['edge_emb'])
            graph_fp, node_fp = self.output_embedding_layer(node_emb=self.output['graph_conv_layers']['node_emb'][-1],
                                                            scope='output_embedding_layer_%d' % layer_idx)
            # Append outputs to lists
            self.output['graph_conv_layers']['node_emb'].append(node_emb)
            self.output['fingerprint_output_layers']['node_fp'].append(node_fp)
            self.output['fingerprint_output_layers']['graph_fp'].append(graph_fp)

        # Obtain graph fingerprint as the sum of the graph activations across all layers
        self.output['fingerprint_output_layers']['fingerprint'] = tf.add_n(self.output['fingerprint_output_layers']['graph_fp'])
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号