Funtional Interface for PyGOD

pygod.nn.functional.double_recon_loss(x, x_, s, s_, weight=0.5, pos_weight_a=0.5, pos_weight_s=0.5, bce_s=False)[source]#

Double reconstruction loss function for feature and structure. The loss function is defined as \(\alpha \symbf{E_a} + (1-\alpha) \symbf{E_s}\), where \(\alpha\) is the weight between 0 and 1 inclusive, and \(\symbf{E_a}\) and \(\symbf{E_s}\) are the reconstruction loss for feature and structure, respectively. The first dimension is kept for outlier scores of each node.

For feature reconstruction, we use mean squared error loss: \(\symbf{E_a} = \|\symbf{X}-\symbf{X}'\odot H\|\), where \(H=\begin{cases}1 - \eta & \text{if }x_{ij}=0\\ \eta & \text{if }x_{ij}>0\end{cases}\), and \(\eta\) is the positive weight for feature.

For structure reconstruction, we use mean squared error loss by default: \(\symbf{E_s} = \|\symbf{S}-\symbf{S}'\odot \Theta\|\), where \(\Theta=\begin{cases}1 - \theta & \text{if }s_{ij}=0\\ \theta & \text{if }s_{ij}>0 \end{cases}\), and \(\theta\) is the positive weight for structure. Alternatively, we can use binary cross entropy loss for structure reconstruction: \(\symbf{E_s} = \text{BCE}(\symbf{S}, \symbf{S}' \odot \Theta)\).

  • x (torch.Tensor) – Ground truth node feature

  • x – Reconstructed node feature

  • s (torch.Tensor) – Ground truth node structure

  • s – Reconstructed node structure

  • weight (float, optional) – Balancing weight \(\alpha\) between 0 and 1 inclusive between node feature and graph structure. Default: 0.5.

  • pos_weight_a (float, optional) – Positive weight for feature \(\eta\). Default: 0.5.

  • pos_weight_s (float, optional) – Positive weight for structure \(\theta\). Default: 0.5.

  • bce_s (bool, optional) – Use binary cross entropy for structure reconstruction loss.


score – Outlier scores of shape \(N\) with gradients.

Return type: