DANE(in_dim, hid_dim, num_classes, num_layers, mode='node', dropout=0.0, gnn='gcn', k=5, train_mode='unsup', tgt_rate=0.05, act=F.relu, weight_decay=1e-05, lr=0.001, epoch=200, device='cuda:0', batch_size=0, num_neigh=-1, verbose=2, **kwargs)

Bases: BaseGDA

DANE: Domain Adaptive Network Embedding (IJCAI-19).

Parameters:
  • in_dim ( int) –

    Input feature dimension.

  • hid_dim ( int) –

    Hidden dimension of model.

  • num_classes (int) –

    Total number of classes.

  • num_layers (int) –

    Total number of layers in model.

  • mode (str, default: 'node' ) –

    Mode for node or graph level tasks. Default: node.

  • dropout (float, default: 0.0 ) –

    Dropout rate. Default: 0..

  • gnn (string, default: 'gcn' ) –

    GNN backbone. Default: gcn.

  • k (int, default: 5 ) –

    Number of negative samples. Default: 5.

  • train_mode (string, default: 'unsup' ) –

    Unsupervised or Semi-supervised. Default: unsup.

  • tgt_rate (float, default: 0.05 ) –

    Target graph rate of labeled nodes. Default: 0.05.

  • weight_decay (float, default: 1e-05 ) –

    Weight decay (L2 penalty). Default: 1e-5.

  • act (callable activation function or None, default: relu ) –

    Activation function if not None. Default: torch.nn.functional.relu.

  • lr (float, default: 0.001 ) –

    Learning rate. Default: 0.001.

  • epoch (int, default: 200 ) –

    Maximum number of training epoch. Default: 200.

  • device (str, default: 'cuda:0' ) –

    GPU or CPU. Default: cuda:0.

  • batch_size (int, default: 0 ) –

    Minibatch size, 0 for full batch training. Default: 0.

  • num_neigh (int, default: -1 ) –

    Number of neighbors in sampling, -1 for all neighbors. Default: -1.

  • verbose (int, default: 2 ) –

    Verbosity mode. Range in [0, 3]. Larger value for printing out more log information. Default: 2.

  • **kwargs

    Other parameters for the model.

L_GCN(embedding, nodes_weight, idx_u, idx_v, k)

Calculate GCN loss for network embedding.

Parameters:
  • embedding (Tensor) –

    Node embeddings.

  • nodes_weight (Tensor) –

    Weight for each node.

  • idx_u (list) –

    Source node indices.

  • idx_v (list) –

    Target node indices.

  • k (int) –

    Number of negative samples.

Returns:
  • Tensor

    GCN loss value.

L_cluster(labelsA, embA, labelsB, embB)

Calculate cluster alignment loss.

Parameters:
  • labelsA (Tensor) –

    Labels from domain A.

  • embA (Tensor) –

    Embeddings from domain A.

  • labelsB (Tensor) –

    Labels from domain B.

  • embB (Tensor) –

    Embeddings from domain B.

Returns:
  • Tensor

    Cluster alignment loss value.

Notes

Aligns the cluster centers of same classes across domains.

fit(source_data, target_data)

Train the DANE model.

Parameters:
  • source_data (Data) –

    Source domain graph data.

  • target_data (Data) –

    Target domain graph data.

Notes

The training process includes:

  • Converting graphs to undirected if needed
  • Setting up data loaders for both domains
  • Initializing GNN and domain discriminator
  • Training with adversarial learning
forward_model(source_data, target_data)

Forward pass of the model with adversarial training.

Parameters:
  • source_data (Data) –

    Source domain graph data.

  • target_data (Data) –

    Target domain graph data.

Returns:
  • tuple

    Contains: - loss : float Combined loss from discriminator and generator. - source_logits : torch.Tensor Model predictions for source domain. - target_logits : torch.Tensor Model predictions for target domain.

init_model(**kwargs)

Initialize the GNN model.

Parameters:
  • **kwargs

    Other parameters for the GNNBase model.

Returns:
  • GNNBase

    Initialized GNN model on the specified device.

predict(data, source=False)

Make predictions on given data.

Parameters:
  • data (Data) –

    Input graph data.

  • source (bool, default: False ) –

    Whether the input is from source domain. Default: False.

Returns:
  • tuple

    Contains: - logits : torch.Tensor Model predictions. - labels : torch.Tensor True labels.

process_graph(data)

Process the input graph data.

Parameters:
  • data (Data) –

    Input graph data to be processed.

Notes

Placeholder method for graph preprocessing.

train_d(source_data, target_data)

Train the domain discriminator.

Parameters:
  • source_data (Data) –

    Source domain graph data.

  • target_data (Data) –

    Target domain graph data.

Returns:
  • float

    Discriminator loss value.

Notes

Trains discriminator to distinguish between source and target domains using adversarial learning approach.

train_g(source_data, target_data)

Train the generator (GNN model).

Parameters:
  • source_data (Data) –

    Source domain graph data.

  • target_data (Data) –

    Target domain graph data.

Returns:
  • float

    Generator loss value.

Notes

Combines multiple loss terms:

  • Adversarial loss
  • GCN loss for network embedding
  • Cross-entropy loss for classification
  • Cluster alignment loss (in semi-supervised mode)