def _build(self): self.layers.append( layers.GraphConvolution( input_dim=self.input_dim if not self.precalc else self.input_dim * 2, output_dim=FLAGS.hidden1, placeholders=self.placeholders, act=tf.nn.relu, dropout=True, sparse_inputs=self.sparse_inputs, # False logging=self.logging, norm=self.norm, precalc=self.precalc, residual=self.residual)) for _ in range(self.num_layers - 2): self.layers.append( layers.GraphConvolution( input_dim=FLAGS.hidden1 if not self.residual else FLAGS.hidden1 * 2, output_dim=FLAGS.hidden1, placeholders=self.placeholders, act=tf.nn.relu, dropout=True, sparse_inputs=False, logging=self.logging, norm=self.norm, precalc=False, residual=self.residual)) self.layers.append( layers.GraphConvolution(input_dim=FLAGS.hidden1 if not self.residual else FLAGS.hidden1 * 2, output_dim=self.output_dim, placeholders=self.placeholders, act=lambda x: x, dropout=True, logging=self.logging, norm=False, precalc=False, residual=self.residual))
def __init__(self, args, adj, node_num, re_hidden, dis_hidden, vi_feature, kernel_size, alphi1, alphi2, alphi3): super(MTGC, self).__init__() # Mask Temporal Graph Convolution self.adj = adj self.node_num = node_num self.re_hidden = re_hidden self.dis_hidden = dis_hidden self.vi_feature = vi_feature self.kernel_size = kernel_size self.alphi1 = alphi1 self.alphi2 = alphi2 self.alphi3 = alphi3 # feature extraction self.s_conv = layers.Convolutinon1D(in_features=node_num, kernal_size=self.kernel_size) self.s_gcn_e = layers.GraphConvolution(in_features=self.node_num, out_features=self.node_num) self.x_conv = layers.Convolutinon1D(in_features=node_num, kernal_size=self.kernel_size) self.x_gcn_e = layers.GraphConvolution(in_features=self.node_num, out_features=self.node_num) self.x_vae_tras = nn.Linear(self.kernel_size * self.node_num, self.node_num) self.s_vae_tras = nn.Linear(self.kernel_size * self.node_num, self.node_num) self.fusion = nn.Linear(self.node_num * 2, self.node_num) # reconstruction network self.vae = layers.VariationalAutoencoder( node_num=self.node_num, hidden_features=self.re_hidden, vi_feature=self.vi_feature) self.x_vae_traspose = nn.Linear(self.node_num, self.kernel_size * self.node_num) # feature extraction self.gcn_d = layers.GraphConvolution(in_features=self.node_num, out_features=self.node_num) self.transpose_conv = layers.ConvolutinonTranspose1D( in_features=node_num, kernal_size=self.kernel_size) self.gcn_d_std = layers.GraphConvolution(in_features=self.node_num, out_features=self.node_num) self.transpose_conv_std = layers.ConvolutinonTranspose1D( in_features=node_num, kernal_size=self.kernel_size) # Discriminator self.mask_discriminator = layers.Discriminator( node_num=self.node_num, kernel_size=kernel_size, vi_feature=self.vi_feature, hidden_features=self.dis_hidden) self.args = args