CDCGS (Community Detection Clustering via Gumbel Softmax) Documentation
🔍 Overview
CDCGS is a graph clustering algorithm that applies the Gumbel-Softmax trick to learn soft assignments of nodes to communities. It computes a community relationship matrix R using these assignments and applies softmax to normalize interactions between clusters.
⚙️ Class Definition
Class Name: CDCGS
This class implements the Gumbel-Softmax based community clustering model.
class CDCGS(nn.Module):
def __init__(self, num_nodes: int, n_clusters: int, tau: float = 1.0):
...
📋 Parameters
Parameter |
Type |
Default |
Description |
|---|---|---|---|
|
int |
— |
Number of graph nodes |
|
int |
— |
Number of target communities |
|
float |
1.0 |
Gumbel-Softmax temperature |
🚀 Usage Examples
from soft_clustering._cdcgs._cdcgs import CDCGS
import torch
adj = torch.tensor([
[0, 1, 0, 0, 0, 0],
[1, 0, 1, 0, 0, 0],
[0, 1, 0, 1, 0, 0],
[0, 0, 1, 0, 1, 0],
[0, 0, 0, 1, 0, 1],
[0, 0, 0, 0, 1, 0]
], dtype=torch.float)
model = CDCGS(num_nodes=6, n_clusters=2, tau=1.0)
R, soft_assign = model(adj)
loss = model.loss(R)
print("Loss:", loss.item())
🛠️ Methods
forward(adj): Computes community assignments and relation matrixloss(output): Encourages the relation matrix to be close to identity
📝 Implementation Notes
Learns soft cluster assignments via Gumbel-Softmax
Encourages orthogonal (independent) clusters via identity loss
Simple and fully unsupervised
📚 Reference
This implementation is based on:
“Community Detection Clustering via Gumbel Softmax”
by H. Zhang, J. Bu, Y. Wang, and C. Chen.