Browse Source

[Enhancement] Add more verbose for the WL kernel.

v0.2.x
jajupmochi 4 years ago
parent
commit
bd8bf2b234
1 changed files with 21 additions and 6 deletions
  1. +21
    -6
      gklearn/kernels/weisfeiler_lehman.py

+ 21
- 6
gklearn/kernels/weisfeiler_lehman.py View File

@@ -14,11 +14,14 @@ Created on Tue Apr 14 15:16:34 2020

import numpy as np
import networkx as nx
import sys
from collections import Counter
# from functools import partial
from itertools import combinations_with_replacement
from gklearn.utils import SpecialLabel
from gklearn.utils.parallel import parallel_gm, parallel_me
from gklearn.kernels import GraphKernel
from gklearn.utils.iters import get_iters


class WeisfeilerLehman(GraphKernel): # @todo: sp, edge user kernel.
@@ -268,7 +271,11 @@ class WeisfeilerLehman(GraphKernel): # @todo: sp, edge user kernel.
all_num_of_each_label = [] # number of occurence of each label in each graph in this iteration

# for each graph
for G in Gn:
if self.verbose >= 2:
iterator = get_iters(Gn, desc='Setting all labels into a tuple')
else:
iterator = Gn
for G in iterator:
# set all labels into a tuple.
for nd, attrs in G.nodes(data=True): # @todo: there may be a better way.
G.nodes[nd]['label_tuple'] = tuple(attrs[name] for name in self._node_labels)
@@ -288,6 +295,10 @@ class WeisfeilerLehman(GraphKernel): # @todo: sp, edge user kernel.
all_num_of_each_label = [] # number of occurence of each label in G

# @todo: parallel this part.
# if self.verbose >= 2:
# iterator = get_iters(enumerate(Gn), desc='Going through iteration ' + str(h), length=len(Gn))
# else:
# iterator = enumerate(Gn)
for idx, G in enumerate(Gn):

all_multisets = []
@@ -341,11 +352,15 @@ class WeisfeilerLehman(GraphKernel): # @todo: sp, edge user kernel.
# parallel_gm(do_partial, gram_matrix, Gn, init_worker=init_worker,
# glbv=(all_num_of_each_label,), n_jobs=self.n_jobs, verbose=self.verbose)
# elif self.parallel is None:
for i in range(len(gram_matrix)):
for j in range(i, len(gram_matrix)):
gram_matrix[i][j] = self._compute_subtree_kernel(all_num_of_each_label[i],
all_num_of_each_label[j], gram_matrix[i][j])
gram_matrix[j][i] = gram_matrix[i][j]
itr = combinations_with_replacement(range(0, len(gram_matrix)), 2)
len_itr = int(len(gram_matrix) * (len(gram_matrix) + 1) / 2)
iterator = get_iters(itr, desc='Computing Gram matrix for this iteration', file=sys.stdout, length=len_itr, verbose=(self.verbose >= 2))
for i, j in iterator:
# for i in iterator:
# for j in range(i, len(gram_matrix)):
gram_matrix[i][j] = self._compute_subtree_kernel(all_num_of_each_label[i],
all_num_of_each_label[j], gram_matrix[i][j])
gram_matrix[j][i] = gram_matrix[i][j]


def _compute_subtree_kernel(self, num_of_each_label1, num_of_each_label2, kernel):


Loading…
Cancel
Save