ELModule

class mowl.nn.ELModule[source]

Bases: Module

Subclass of torch.nn.Module for \(\mathcal{EL}\) models.

This class provides an interface for loss functions of the 7 possible normal forms existing in the \(\mathcal{EL}\) language. In case a negative version of one of the loss function exist, it must be placed inside the original loss function and be accesed through the neg parameter. More information of this can be found at Embedding the EL language

Methods Summary

class_assertion_loss(axiom_data[, neg])

Loss function for class assertion: \(C(a)\).

forward(gci, gci_name[, neg])

Define the computation performed at every call.

gci0_bot_loss(gci[, neg])

Loss function for GCI0 with bottom concept: \(C \sqsubseteq \perp\).

gci0_loss(gci[, neg])

Loss function for GCI0: \(C \sqsubseteq D\).

gci1_bot_loss(gci[, neg])

Loss function for GCI1 with bottom concept: \(C_1 \sqcap C_2 \sqsubseteq \perp\).

gci1_loss(gci[, neg])

Loss function for GCI1: \(C_1 \sqcap C_2 \sqsubseteq D\).

gci2_loss(gci[, neg])

Loss function for GCI2: \(C \sqsubseteq \exists R.D\).

gci3_bot_loss(gci[, neg])

Loss function for GCI3 with bottom concept: \(\exists R.C \sqsubseteq \perp\).

gci3_loss(gci[, neg])

Loss function for GCI3: \(\exists R.C \sqsubseteq D\).

get_loss_function(gci_name)

This chooses the corresponding loss fuction given the name of the GCI.

object_property_assertion_loss(axiom_data[, neg])

Loss function for role assertion: \(R(a,b)\).

Methods Documentation

class_assertion_loss(axiom_data, neg=False)[source]

Loss function for class assertion: \(C(a)\). :param axiom_data: Input tensor of shape (*,2) where C classes will be at axiom_data[:,0] and a individuals will be at axiom_data[:,1]. It is recommended to use the ELDataset. :type axiom_data: torch.Tensor :param neg: Parameter indicating that the negative version of this loss function must be used. Defaults to False. :type neg: bool, optional.

forward(gci, gci_name, neg=False)[source]

Define the computation performed at every call.

Should be overridden by all subclasses.

Note

Although the recipe for forward pass needs to be defined within this function, one should call the Module instance afterwards instead of this since the former takes care of running the registered hooks while the latter silently ignores them.

gci0_bot_loss(gci, neg=False)[source]

Loss function for GCI0 with bottom concept: \(C \sqsubseteq \perp\).

Parameters:
  • gci (torch.Tensor) – Input tensor of shape (*,2) where C classes will be at gci[:,0] and bottom classes will be at gci[:,1]. It is recommended to use the ELDataset.

  • neg (bool, optional.) – Parameter indicating that the negative version of this loss function must be used. Defaults to False.

gci0_loss(gci, neg=False)[source]

Loss function for GCI0: \(C \sqsubseteq D\).

Parameters:
  • gci (torch.Tensor) – Input tensor of shape (*,2) where C classes will be at gci[:,0] and D classes will be at gci[:,1]. It is recommended to use the ELDataset.

  • neg (bool, optional.) – Parameter indicating that the negative version of this loss function must be used. Defaults to False.

gci1_bot_loss(gci, neg=False)[source]

Loss function for GCI1 with bottom concept: \(C_1 \sqcap C_2 \sqsubseteq \perp\).

Parameters:
  • gci (torch.Tensor) – Input tensor of shape (*,3) where C1 classes will be at gci[:,0], C2 classes will be at gci[:,1] and bottom classes will be at gci[:,2]. It is recommended to use the ELDataset.

  • neg (bool, optional.) – Parameter indicating that the negative version of this loss function must be used. Defaults to False.

gci1_loss(gci, neg=False)[source]

Loss function for GCI1: \(C_1 \sqcap C_2 \sqsubseteq D\).

Parameters:
  • gci (torch.Tensor) – Input tensor of shape (*,3) where C1 classes will be at gci[:,0], C2 classes will be at gci[:,1] and D classes will be at gci[:,2]. It is recommended to use the ELDataset.

  • neg (bool, optional.) – Parameter indicating that the negative version of this loss function must be used. Defaults to False.

gci2_loss(gci, neg=False)[source]

Loss function for GCI2: \(C \sqsubseteq \exists R.D\). \(C \sqsubseteq \exists R. D\). :param gci: Input tensor of shape (*,3) where C classes will be at gci[:,0], R object properties will be at gci[:,1] and D classes will be at gci[:,2]. It is recommended to use the ELDataset. :type gci: torch.Tensor :param neg: Parameter indicating that the negative version of this loss function must be used. Defaults to False. :type neg: bool, optional.

gci3_bot_loss(gci, neg=False)[source]

Loss function for GCI3 with bottom concept: \(\exists R.C \sqsubseteq \perp\).

Parameters:
  • gci (torch.Tensor) – Input tensor of shape (*,3) where R object properties will be at gci[:,0], C classes will be at gci[:,1] and bottom classes will be at gci[:,2]. It is recommended to use the ELDataset.

  • neg (bool, optional.) – Parameter indicating that the negative version of this loss function must be used. Defaults to False.

gci3_loss(gci, neg=False)[source]

Loss function for GCI3: \(\exists R.C \sqsubseteq D\).

Parameters:
  • gci (torch.Tensor) – Input tensor of shape (*,3) where R object properties will be at gci[:,0], C classes will be at gci[:,1] and D classes will be at gci[:,2]. It is recommended to use the ELDataset.

  • neg (bool, optional.) – Parameter indicating that the negative version of this loss function must be used. Defaults to False.

get_loss_function(gci_name)[source]

This chooses the corresponding loss fuction given the name of the GCI.

Parameters:

gci_name (str) – Name of the GCI. Choices are gci0, gci1, gci2, gci3, gci0_bot, gci1_bot and gci3_bot.

object_property_assertion_loss(axiom_data, neg=False)[source]

Loss function for role assertion: \(R(a,b)\). :param axiom_data: Input tensor of shape (*,3) where a object properties will be at axiom_data[0], ``R object properties will be at axiom_data[:,1] and b individuals will be at axiom_data[:,2]. It is recommended to use the ELDataset. :type axiom_data: torch.Tensor :param neg: Parameter indicating that the negative version of this loss function must be used. Defaults to False. :type neg: bool, optional.