from mowl.base_models.elmodel import EmbeddingELModel
from mowl.nn import BoxSquaredELModule
[docs]
class BoxSquaredEL(EmbeddingELModel):
"""
Implementation based on [jackermeier2023]_.
"""
def __init__(self,
dataset,
embed_dim=50,
margin=0.02,
reg_norm=1,
learning_rate=0.001,
batch_size=4096 * 8,
delta=2.5,
reg_factor=0.2,
num_negs=4,
model_filepath=None,
device='cpu',
neg_sampling_gcis=None
):
super().__init__(dataset, embed_dim, batch_size, extended=True,
model_filepath=model_filepath, device=device,
learning_rate=learning_rate,
neg_sampling_gcis=neg_sampling_gcis)
self.margin = margin
self.reg_norm = reg_norm
self.delta = delta
self.reg_factor = reg_factor
self.num_negs = num_negs
self._loaded = False
self.extended = False
self.init_module()
[docs]
def init_module(self):
self.module = BoxSquaredELModule(
len(self.class_index_dict),
len(self.object_property_index_dict),
len(self.individual_index_dict),
embed_dim=self.embed_dim,
gamma=self.margin,
delta=self.delta,
reg_factor=self.reg_factor
).to(self.device)