graphstorm.model.RelationalGCNEncoder
- class graphstorm.model.RelationalGCNEncoder(g, h_dim, out_dim, num_bases=-1, num_hidden_layers=1, dropout=0, use_self_loop=True, last_layer_act=False, num_ffn_layers_in_gnn=0, norm=None)
Relational graph conv encoder.
The RelationalGCNEncoder employs several RelGraphConvLayer as its encoding mechanism. The RelationalGCNEncoder should be designated as the model’s encoder within Graphstorm.
Parameters
- gDistGraph
The distributed graph object.
- h_dimint
Hidden dimension
- out_dimint
Output dimension
- num_bases: int
Number of bases.
- num_hidden_layersint
Number of hidden layers. Total GNN layers is equal to num_hidden_layers + 1. Default 1
- dropoutfloat
Dropout. Default 0.
- use_self_loopbool
Whether to add selfloop. Default True
- last_layer_acttorch.function
Activation for the last layer. Default None
- num_ffn_layers_in_gnn: int
Number of ngnn gnn layers between GNN layers
- normstr, optional
Normalization Method. Default: None
Examples:
# Build model and do full-graph inference on RelationalGCNEncoder from graphstorm import get_feat_size from graphstorm.model.rgcn_encoder import RelationalGCNEncoder from graphstorm.model.node_decoder import EntityClassifier from graphstorm.model import GSgnnNodeModel, GSNodeEncoderInputLayer from graphstorm.dataloading import GSgnnNodeTrainData from graphstorm.model.gnn import do_full_graph_inference np_data = GSgnnNodeTrainData(...) model = GSgnnNodeModel(alpha_l2norm=0) feat_size = get_feat_size(np_data.g, 'feat') encoder = GSNodeEncoderInputLayer(g, feat_size, 4, dropout=0, use_node_embeddings=True) model.set_node_input_encoder(encoder) gnn_encoder = RelationalGCNEncoder(g, 4, 4, num_heads=2, num_hidden_layers=1, dropout=0, use_self_loop=True, norm=norm) model.set_gnn_encoder(gnn_encoder) model.set_decoder(EntityClassifier(model.gnn_encoder.out_dims, 3, False)) h = do_full_graph_inference(model, np_data)