예제 #1
0
 def __init__(
     self,
     in_dim: int,
     out_dim: int,
 ):
     super().__init__()
     self.layers = nn.Sequential(
         Linear(in_dim, out_dim // 2, orders=('linear', 'act')),
         Linear(out_dim // 2, out_dim, orders=('linear', 'act')))
예제 #2
0
 def __init__(
     self,
     obj_dim: int,
     q_dim: int,
     kernel_size: int,
     obj_method: str,
 ):
     super().__init__()
     hid_dim = q_dim // 2
     self.obj_method = obj_method
     self.obj_prob_l = Linear(obj_dim, hid_dim, orders=('linear', 'act'))
     self.q_prob_l = Linear(q_dim,
                            hid_dim * kernel_size,
                            orders=('linear', 'act'))
     self.kernel_size = kernel_size
예제 #3
0
 def __init__(
     self,
     obj_dim: int,
     q_dim: int,
     kernel_size: int,
     obj_method: str,
 ):
     super().__init__()
     self.obj_method = obj_method
     self.obj_prob_l = Linear(obj_dim, q_dim // 2, orders=('linear', 'act'))
     self.q_prob_l = Linear(q_dim, q_dim // 2, orders=('linear', 'act'))
     self.logit_l = nn.Sequential(
         nn.Linear(self.calc_in_dim(q_dim // 2, q_dim // 2, obj_method),
                   q_dim // 4), nn.ReLU(inplace=True),
         nn.Linear(q_dim // 4, kernel_size))
예제 #4
0
 def __init__(self,
              obj_dim: int,
              q_dim: int,
              out_dim: int,
              dropout: float = None):
     super().__init__()
     self.obj_proj_l = Linear(obj_dim, out_dim, orders=('linear', 'act'))
     self.edge_cond_l = FusionCond(obj_dim, q_dim, out_dim)
     if dropout is not None:
         self.drop_l = nn.Dropout(dropout)
     else:
         self.drop_l = Null()
예제 #5
0
 def __init__(self, obj_dim: int, q_dim: int, out_dim: int):
     super().__init__()
     self.q_proj_l = nn.utils.weight_norm(nn.Linear(q_dim,
                                                    out_dim // 2 * 2))
     self.cond_l = Linear(obj_dim,
                          out_dim // 2,
                          norm_type='layer',
                          norm_affine=False,
                          orders=('linear', 'norm', 'cond', 'act'))
     self.linear_l = nn.Sequential(
         nn.utils.weight_norm(nn.Linear(out_dim // 2, out_dim // 2)),
         nn.ReLU(inplace=True),
         nn.utils.weight_norm(nn.Linear(out_dim // 2, out_dim)))
예제 #6
0
 def __init__(
     self,
     in_dim: int,
     cond_dim: int,
     out_dim: int,
     norm_type='layer',
     dropout: float = 0.,
 ):
     super().__init__()
     self.cond_proj_l = nn.Sequential(
         nn.Dropout(dropout),
         nn.utils.weight_norm(nn.Linear(cond_dim, out_dim * 2)))
     self.drop_l = nn.Dropout(dropout)
     self.film_l = Linear(in_dim,
                          out_dim // 2,
                          norm_type=norm_type,
                          norm_affine=False,
                          orders=('linear', 'norm', 'cond', 'act'))
예제 #7
0
 def __init__(self,
              node_dim: int,
              cond_dim: int,
              out_dim: int,
              method: str = 'mean',
              dropout: float = 0.):
     super().__init__()
     self.cond_proj_l = nn.Sequential(
         nn.Dropout(dropout),
         nn.utils.weight_norm(nn.Linear(cond_dim, out_dim)))
     self.drop_l = nn.Dropout(dropout)
     self.film_l = Linear(node_dim,
                          out_dim // 2,
                          norm_type='layer',
                          norm_affine=False,
                          orders=('linear', 'norm', 'cond', 'act'))
     self.linear_l = nn.Sequential(
         nn.utils.weight_norm(nn.Linear(out_dim // 2, out_dim)), )
     self.relu_l = nn.ReLU()
     self.method = method
예제 #8
0
    def __init__(
        self,
        node_dim: int,
        cond_dim: int,
        edge_dim: int,
        n2n_method: str,
        dropout: float = 0.,
    ):

        super().__init__()
        self.n2n_method = n2n_method
        self.node_proj_l = nn.Sequential(
            nn.Dropout(dropout),
            nn.utils.weight_norm(nn.Linear(node_dim, edge_dim)), nn.ReLU())
        self.cond_proj_l = nn.Sequential(
            nn.Dropout(dropout),
            nn.utils.weight_norm(nn.Linear(cond_dim, edge_dim * 2)),
        )
        n_fusion_dim = edge_dim * 2 if n2n_method == 'cat' else edge_dim
        self.film_l = Linear(n_fusion_dim,
                             edge_dim,
                             norm_type='layer',
                             norm_affine=False,
                             orders=('linear', 'norm', 'cond', 'act'))