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)
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)
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)
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)
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)