def _build_graph_conv(self, F_h): self.F_h = list(F_h) if isinstance(F_h, tuple) else F_h self.conv, self.bn = [], [] for i, (f_in, f_out) in enumerate(zip([self.F_e] + self.F_h[:-1], self.F_h)): conv = modules.GraphConv(f_in, f_out, self.N_B + self.D) self.conv.append(conv) self.register_child(conv) if i != 0: bn = modules.BatchNorm(in_channels=f_in) self.register_child(bn) else: bn = None self.bn.append(bn) self.bn_skip = modules.BatchNorm(in_channels=sum(self.F_h)) self.linear_skip = modules.Linear_BN(sum(self.F_h), self.F_skip) # projectors for conditional variable self.linear_c = [] for i, f_out in enumerate(self.F_h): if self.rename: linear_c = nn.Dense(f_out, use_bias=False, in_units=self.N_C, prefix='cond_{}'.format(i)) else: linear_c = nn.Dense(f_out, use_bias=False, in_units=self.N_C) self.register_child(linear_c) self.linear_c.append(linear_c)
def _build_graph_conv(self, F_h): self.F_h = list(F_h) if isinstance(F_h, tuple) else F_h self.conv, self.bn = [], [] for i, (f_in, f_out) in enumerate(zip([self.F_e] + self.F_h[:-1], self.F_h)): conv = modules.GraphConv(f_in, f_out, self.N_B + self.D) self.conv.append(conv) self.register_child(conv) if i != 0: bn = modules.BatchNorm(in_channels=f_in) self.register_child(bn) else: bn = None self.bn.append(bn) self.bn_skip = modules.BatchNorm(in_channels=sum(self.F_h)) self.linear_skip = modules.Linear_BN(sum(self.F_h), self.F_skip)