Skip to content

Commit aabbbfa

Browse files
authored
Merge pull request #205 from baxtree/development-criterion
make MuRP a pointwise model and refactor
2 parents 22964e0 + 5f7657a commit aabbbfa

File tree

11 files changed

+264
-225
lines changed

11 files changed

+264
-225
lines changed

docs/source/api.rst

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,18 @@ pykg2vec.models.projection
7474
.. automodule:: pykg2vec.models.projection
7575
:members:
7676

77+
pykg2vec.models.Domain
78+
------------------------
79+
80+
.. automodule:: pykg2vec.models.Domain
81+
:members:
82+
83+
pykg2vec.models.KGMeta
84+
------------------------
85+
86+
.. automodule:: pykg2vec.models.KGMeta
87+
:members:
88+
7789
====
7890

7991
pykg2vec.utils
@@ -85,12 +97,30 @@ pykg2vec.utils.bayesian_optimizer
8597
.. automodule:: pykg2vec.utils.bayesian_optimizer
8698
:members:
8799

100+
pykg2vec.utils.criterion
101+
---------------------------------
102+
103+
.. automodule:: pykg2vec.utils.criterion
104+
:members:
105+
88106
pykg2vec.utils.evaluator
89107
------------------------
90108

91109
.. automodule:: pykg2vec.utils.evaluator
92110
:members:
93111

112+
pykg2vec.utils.logger
113+
------------------------
114+
115+
.. automodule:: pykg2vec.utils.logger
116+
:members:
117+
118+
pykg2vec.utils.riemannian_optimizer
119+
------------------------
120+
121+
.. automodule:: pykg2vec.utils.riemannian_optimizer
122+
:members:
123+
94124
pykg2vec.utils.trainer
95125
----------------------
96126

@@ -118,19 +148,42 @@ pykg2vec.test.test_generator
118148
.. automodule:: pykg2vec.test.test_generator
119149
:members:
120150

151+
pykg2vec.test.test_hp_loader
152+
----------------------------
153+
154+
.. automodule:: pykg2vec.test.test_hp_loader
155+
:members:
156+
157+
pykg2vec.test.test_inference
158+
----------------------------
159+
160+
.. automodule:: pykg2vec.test.test_inference
161+
:members:
162+
121163
pykg2vec.test.test_kg
122164
---------------------
123165

124166
.. automodule:: pykg2vec.test.test_kg
125167
:members:
126168

169+
pykg2vec.test.test_logger
170+
---------------------
171+
172+
.. automodule:: pykg2vec.test.test_logger
173+
:members:
127174

128175
pykg2vec.test.test_model
129176
------------------------
130177

131178
.. automodule:: pykg2vec.test.test_model
132179
:members:
133180

181+
pykg2vec.test.test_trainer
182+
------------------------
183+
184+
.. automodule:: pykg2vec.test.test_trainer
185+
:members:
186+
134187
pykg2vec.test.test_tune_model
135188
-----------------------------
136189

@@ -140,5 +193,5 @@ pykg2vec.test.test_tune_model
140193
pykg2vec.test.test_inference
141194
----------------------------
142195

143-
.. automodule:: pykg2vec.test.test_inference
196+
.. automodule:: pykg2vec.test.test_visualization
144197
:members:

examples/README.txt

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,18 @@ Please go through the examples for more advanced usages:
3131
- YAML formatting example (The file is also provided in /examples folder named custom_hp.yaml): ::
3232

3333
model_name: "TransE"
34-
dataset: "freebase15k"
35-
parameters:
36-
learning_rate: 0.01
37-
l1_flag: True
38-
hidden_size: 50
39-
batch_size: 128
40-
epochs: 1000
41-
margin: 1.00
42-
optimizer: "sgd"
43-
sampling: "uniform"
44-
neg_rate: 1
34+
datasets:
35+
- dataset: "freebase15k"
36+
parameters:
37+
learning_rate: 0.01
38+
l1_flag: True
39+
hidden_size: 50
40+
batch_size: 128
41+
epochs: 1000
42+
margin: 1.00
43+
optimizer: "sgd"
44+
sampling: "bern"
45+
neg_rate: 1
4546

4647
- NB: To make sure the loaded hyperparameters will be actually used for training, you need to pass in the same model_name value via -mn and the same dataset value via -ds as already specified in the YAML file from where those hyperparameters are originated.
4748

@@ -98,9 +99,26 @@ To create and use your own dataset, these steps are required:
9899
[name]-train.txt, [name]-valid.txt, [name]-test.txt
99100

100101
3. For those three files, create a folder [path_storing_text_files] to include them.
101-
4. Once finished, you then can use your own dataset to train a KGE model using command:::
102+
4. Create a new custom hyperparameter YAML file (detailed in "Use Your Own Hyperparameters"). For example, ::
102103

103-
$ python train.py -mn TransE -ds [name] -dsp [path_storing_text_files]
104+
model_name: "TransE"
105+
datasets:
106+
- dataset: "[name]"
107+
parameters:
108+
learning_rate: 0.01
109+
l1_flag: True
110+
hidden_size: 50
111+
batch_size: 128
112+
epochs: 1000
113+
margin: 1.00
114+
optimizer: "sgd"
115+
sampling: "bern"
116+
neg_rate: 1
117+
118+
5. Once finished, you then can use your own dataset to train a KGE model or tune its hyperparameters using commands:::
119+
120+
$ python train.py -mn TransE -ds [name] -dsp [path_storing_text_files] -hpf [path_to_hyperparameter_yaml]
121+
$ python tune_model.py -mn TransE -ds [name] -dsp [path_storing_text_files] -hpf [path_to_hyperparameter_yaml]
104122

105123

106124
.. _LinkToEx: https://github.com/Sujit-O/pykg2vec/tree/master/examples

examples/custom_hp.yaml

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
model_name: "TransE"
2-
dataset: "freebase15k"
3-
parameters:
4-
learning_rate: 0.01
5-
l1_flag: True
6-
hidden_size: 50
7-
batch_size: 128
8-
epochs: 1000
9-
margin: 1.00
10-
optimizer: "sgd"
11-
sampling: "uniform"
12-
neg_rate: 1
2+
datasets:
3+
- dataset: "freebase15k"
4+
parameters:
5+
learning_rate: 0.01
6+
l1_flag: True
7+
hidden_size: 50
8+
batch_size: 128
9+
epochs: 1000
10+
margin: 1.00
11+
optimizer: "sgd"
12+
sampling: "bern"
13+
neg_rate: 1

pykg2vec/common.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ class TrainingStrategy(Enum):
2222
PROJECTION_BASED = "projection_based" # matching models with neural network
2323
PAIRWISE_BASED = "pairwise_based" # translational distance models
2424
POINTWISE_BASED = "pointwise_based" # semantic matching models
25-
HYPERBOLIC_SPACE_BASED = "hyperbolic_space_based" # models of hyperbolic space
2625

2726

2827
class KGEArgParser:
@@ -272,7 +271,7 @@ def __init__(self):
272271
"hyper": "projection.HypER",
273272
"interacte": "projection.InteractE",
274273
"kg2e": "pairwise.KG2E",
275-
"murp": "hyperbolic.MuRP",
274+
"murp": "pointwise.MuRP",
276275
"ntn": "pairwise.NTN",
277276
"octonione": "pointwise.OctonionE",
278277
"proje_pointwise": "projection.ProjE_pointwise",

pykg2vec/data/generator.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,8 +305,6 @@ def create_train_processor_process(self):
305305
process_worker = Process(target=process_function_pairwise, args=(self.raw_queue, self.processed_queue, self.config))
306306
elif self.training_strategy == TrainingStrategy.POINTWISE_BASED:
307307
process_worker = Process(target=process_function_pointwise, args=(self.raw_queue, self.processed_queue, self.config))
308-
elif self.training_strategy == TrainingStrategy.HYPERBOLIC_SPACE_BASED:
309-
process_worker = Process(target=process_function_pairwise, args=(self.raw_queue, self.processed_queue, self.config))
310308
else:
311309
raise NotImplementedError("This strategy is not supported.")
312310
self.process_list.append(process_worker)

pykg2vec/models/KGMeta.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -78,17 +78,3 @@ def __init__(self, model_name):
7878
self.model_name = model_name
7979
self.training_strategy = TrainingStrategy.PROJECTION_BASED
8080
self.database = {} # dict to store model-specific hyperparameter
81-
82-
83-
class HyperbolicSpaceModel(nn.Module, Model):
84-
""" Meta Class for KGE models of hyperbolic space"""
85-
86-
__metaclass__ = ABCMeta
87-
88-
def __init__(self, model_name):
89-
"""Initialize and create the model to be trained and inferred"""
90-
super(HyperbolicSpaceModel, self).__init__()
91-
92-
self.model_name = model_name
93-
self.training_strategy = TrainingStrategy.HYPERBOLIC_SPACE_BASED
94-
self.database = {} # dict to store model-specific hyperparameter

pykg2vec/models/hyperbolic.py

Lines changed: 0 additions & 137 deletions
This file was deleted.

0 commit comments

Comments
 (0)