Question about the external and internal weights when designing rgcn_hetero

I have two questions about the weight in rgcn_hetero example:

(1) why set the weight of i2h layer to false and set the weight of h2o layer to true?

    # i2h
    self.layers.append(RelGraphConvLayer(
        self.h_dim, self.h_dim, self.rel_names,
        self.num_bases, activation=F.relu, self_loop=self.use_self_loop,
        dropout=self.dropout, **weight=False**))

    # h2o
    self.layers.append(RelGraphConvLayer(
        self.h_dim, self.out_dim, self.rel_names,
        self.num_bases, activation=None,
        self_loop=self.use_self_loop))

(2) Why use the external weight but not directly use the weight defined by GraphConv itself? What is the advantage of such setting. Thank you.

    self.conv = dglnn.HeteroGraphConv({
            rel : dglnn.GraphConv(in_feat, out_feat, norm='right', **weight=False**, bias=False)
            for rel in rel_names
        })

The external weight is used in case we need to apply weight Regularization (e.g., using basis based regularization), that the weight is generated in each forward path as shown in https://github.com/dmlc/dgl/blob/165c67ccdabfaf1de1fba004a06c4ab8b9928a6f/examples/pytorch/rgcn-hetero/model.py#L98-L100)