Ejemplo n.º 1
0
 def __init__(self, v_dim, q_dim, num_hid, norm, act, dropout=0.0):
     super(Att_3, self).__init__()
     norm_layer = get_norm(norm)
     self.v_proj = FCNet([v_dim, num_hid], dropout= dropout, norm= norm, act= act)
     self.q_proj = FCNet([q_dim, num_hid], dropout= dropout, norm= norm, act= act)
     self.nonlinear = FCNet([num_hid, num_hid], dropout= dropout, norm= norm, act= act)
     self.linear = norm_layer(nn.Linear(num_hid, 1), dim=None)
Ejemplo n.º 2
0
    def __init__(self, v_dim, q_dim, num_hid, norm, act, dropout=0.0):
        super(Att_P, self).__init__()
        norm_layer = get_norm(norm)

        self.gated_tanh = GTH(in_dim=v_dim + q_dim,
                              out_dim=num_hid,
                              dropout=dropout,
                              norm=norm,
                              act=act)
        self.linear = norm_layer(nn.Linear(num_hid, 1), dim=None)
Ejemplo n.º 3
0
 def __init__(self, v_dim, q_dim, num_hid, norm, act, dropout=0.0):
     super(Att_PD, self).__init__()
     norm_layer = get_norm(norm)
     self.nonlinear = FCNet([v_dim + q_dim, num_hid, num_hid],
                            dropout=dropout,
                            norm=norm,
                            act=act)
     self.nonlinear_gate = FCNet([v_dim + q_dim, num_hid, num_hid],
                                 dropout=dropout,
                                 norm=norm,
                                 act='Sigmoid')
     self.linear = norm_layer(nn.Linear(num_hid, 1), dim=None)
Ejemplo n.º 4
0
    def __init__(self, in_dim, hid_dim, out_dim, norm, act, dropout=0.5):
        super(SimpleClassifier, self).__init__()

        norm_layer = get_norm(norm)
        act_layer = get_act(act)

        layers = [
            norm_layer(nn.Linear(in_dim, hid_dim), dim=None),
            act_layer(),
            nn.Dropout(dropout, inplace=False),
            norm_layer(nn.Linear(hid_dim, out_dim), dim=None)
        ]
        self.main = nn.Sequential(*layers)
Ejemplo n.º 5
0
    def __init__(self,
                 c_dim,
                 num_hid,
                 q_dim,
                 nlayers,
                 bidirect,
                 dropout,
                 rnn_type='LSTM',
                 v_dim=2048):
        """Module for question embedding
        """
        super(CaptionQuestionImageRNN, self).__init__()
        assert rnn_type == 'LSTM' or rnn_type == 'GRU'
        rnn_cls = nn.LSTM if rnn_type == 'LSTM' else nn.GRU
        norm_layer = get_norm('weight')
        self.rnn_att = rnn_cls(c_dim,
                               num_hid,
                               nlayers,
                               bidirectional=bidirect,
                               dropout=dropout,
                               batch_first=True)

        self.rnn_c = rnn_cls(c_dim,
                             num_hid,
                             nlayers,
                             bidirectional=bidirect,
                             dropout=dropout,
                             batch_first=True)

        self.q_emb_for_c = FCNet([q_dim, num_hid],
                                 dropout=0.2,
                                 norm='weight',
                                 act='LeakyReLU')
        self.att_logits = norm_layer(nn.Linear(num_hid, 1), dim=None)

        self.v_emb_for_c = FCNet([v_dim, num_hid],
                                 dropout=0.2,
                                 norm='weight',
                                 act='LeakyReLU')
        self.v_att_logits = norm_layer(nn.Linear(num_hid, 1), dim=None)

        self.Sig = nn.Sigmoid()
        self.c_dim = c_dim
        self.q_dim = q_dim
        self.num_hid = num_hid
        self.nlayers = nlayers
        self.ndirections = int(bidirect) + 1
        self.rnn_type = rnn_type
        self.v_dim = v_dim
 def __init__(self,
              v_dim,
              q_dim,
              num_hid,
              norm,
              act,
              bidirect=False,
              dropout=0.0):
     super(Base_Att, self).__init__()
     norm_layer = get_norm(norm)
     if (bidirect is False):
         self.nonlinear = FCNet([v_dim + q_dim, num_hid],
                                dropout=dropout,
                                norm=norm,
                                act=act)
     else:
         self.nonlinear = FCNet([v_dim + 2 * q_dim, num_hid],
                                dropout=dropout,
                                norm=norm,
                                act=act)
     self.linear = norm_layer(nn.Linear(num_hid, 1), dim=None)