|
- .. _model:
-
- AutoGL Model
- ============
-
- AutoGL project uses ``model`` to define the common graph nerual networks and ``automodel`` to denote the relative class that includes some auto functions. Currently, we support the following models and automodels:
-
- * ``GCN`` and ``AutoGCN`` : graph convolutional network from https://arxiv.org/abs/1609.02907
- * ``GAT`` and ``AutoGAT`` : graph attentional network from https://arxiv.org/abs/1710.10903
- * ``GraphSAGE`` and ``AutoGraphSAGE`` : from the "Inductive Representation Learning on Large Graphs" https://arxiv.org/abs/1706.02216
-
- And we also support the following models and automodels for graph classification tasks:
- * ``GIN`` and ``AutoGIN`` : graph isomorphism network from https://arxiv.org/abs/1810.00826
- * ``Topkpool`` and ``AutoTopkpool`` : graph U-Net from https://arxiv.org/abs/1905.05178, https://arxiv.org/abs/1905.02850
-
- Define your own model and automodel
- -----------------------------------
-
- If you want to add your own model and automodel for some task, the only thing you should do is add a new model where the forward function should be fulfilled and a new automodel inherited from the basemodel.
-
- Firstly, you should define your model if it does not belong to the models above.
-
- Secondly, you should define your corresponding automodel.
-
- .. code-block:: python
-
- # 1. define your search space to self.space of your automodel instance
- [
- {'parameterName': 'num_layers', 'type': 'DISCRETE', 'feasiblePoints': '2,3,4'},
- {"parameterName": 'hidden', "type": "NUMERICAL_LIST", "numericalType": "INTEGER", "length": 3, "minValue": [8, 8, 8], "maxValue": [64, 64, 64], "scalingType": "LOG"},
- {'parameterName': 'dropout', 'type': 'DOUBLE', 'maxValue': 0.9, 'minValue': 0.1, 'scalingType': 'LINEAR'},
- {'parameterName': 'act', 'type': 'CATEGORICAL_LIST', "feasiblePoints": ['leaky_relu', 'relu', 'elu', 'tanh']},
- ]
- # 2. define the default point to self.hyperparams of your automodel instance
- {
- 'num_layers': 2,
- 'hidden': [16],
- 'dropout': 0.2,
- 'act': 'leaky_relu'
- }
-
- Where ``self.space`` is a list of dictionary indicating the name, type, feasible point, min/max value and some properties of the parameter. ``self.hyperparams`` is a dictionary indicating the hyper-parameters used in this model.
-
- Finally, you can use the defined model and automodel for the specific need.
-
- .. code-block :: python
-
- # for example
- import torch
- from .base import BaseModel
- class YourGNN(torch.nn.Module):
- def forward(self, data):
- pass # Your forward function
-
- class YourAutoGNN(BaseModel):
- def __init__(self, num_features=None, num_classes=None, device=None, init=True, **args):
- """
- num_features: the number of features
- num_classes: the number of classes
- device: your device to run code
- init: if True, the model will be initialize
- """
- self.space = XXX # Define your search space
- self.hyperparams = XXX # Define your hyper-parameters
- self.initialized = False
- if init is True:
- self.initialize()
|