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.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.h_dim, self.out_dim, self.rel_names,
        self.num_bases, activation=None,

(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