def __init__(self): super(AttBasicModel, self).__init__() self.ss_prob = 0.0 # Schedule sampling probability self.vocab_size = cfg.MODEL.VOCAB_SIZE + 1 # include <BOS>/<EOS> self.att_dim = cfg.MODEL.ATT_FEATS_EMBED_DIM \ if cfg.MODEL.ATT_FEATS_EMBED_DIM > 0 else cfg.MODEL.ATT_FEATS_DIM # word embed sequential = [nn.Embedding(self.vocab_size, cfg.MODEL.WORD_EMBED_DIM)] sequential.append(utils.activation(cfg.MODEL.WORD_EMBED_ACT)) if cfg.MODEL.WORD_EMBED_NORM == True: sequential.append(nn.LayerNorm(cfg.MODEL.WORD_EMBED_DIM)) if cfg.MODEL.DROPOUT_WORD_EMBED > 0: sequential.append(nn.Dropout(cfg.MODEL.DROPOUT_WORD_EMBED)) self.word_embed = nn.Sequential(*sequential) # global visual feat embed sequential = [] if cfg.MODEL.GVFEAT_EMBED_DIM > 0: sequential.append( nn.Linear(cfg.MODEL.GVFEAT_DIM, cfg.MODEL.GVFEAT_EMBED_DIM)) sequential.append(utils.activation(cfg.MODEL.GVFEAT_EMBED_ACT)) if cfg.MODEL.DROPOUT_GV_EMBED > 0: sequential.append(nn.Dropout(cfg.MODEL.DROPOUT_GV_EMBED)) self.gv_feat_embed = nn.Sequential( *sequential) if len(sequential) > 0 else None # attention feats embed sequential = [] if cfg.MODEL.ATT_FEATS_EMBED_DIM > 0: sequential.append( nn.Linear(cfg.MODEL.ATT_FEATS_DIM, cfg.MODEL.ATT_FEATS_EMBED_DIM)) sequential.append(utils.activation(cfg.MODEL.ATT_FEATS_EMBED_ACT)) if cfg.MODEL.DROPOUT_ATT_EMBED > 0: sequential.append(nn.Dropout(cfg.MODEL.DROPOUT_ATT_EMBED)) if cfg.MODEL.ATT_FEATS_NORM == True: sequential.append(torch.nn.LayerNorm( cfg.MODEL.ATT_FEATS_EMBED_DIM)) self.att_embed = nn.Sequential( *sequential) if len(sequential) > 0 else None self.dropout_lm = nn.Dropout( cfg.MODEL.DROPOUT_LM) if cfg.MODEL.DROPOUT_LM > 0 else None self.logit = nn.Linear(cfg.MODEL.RNN_SIZE, self.vocab_size) self.p_att_feats = nn.Linear(self.att_dim, cfg.MODEL.ATT_HIDDEN_SIZE) \ if cfg.MODEL.ATT_HIDDEN_SIZE > 0 else None # bilinear if cfg.MODEL.BILINEAR.DIM > 0: self.p_att_feats = None self.encoder_layers = blocks.create( cfg.MODEL.BILINEAR.ENCODE_BLOCK, embed_dim=cfg.MODEL.BILINEAR.DIM, att_type=cfg.MODEL.BILINEAR.ATTTYPE, att_heads=cfg.MODEL.BILINEAR.HEAD, att_mid_dim=cfg.MODEL.BILINEAR.ENCODE_ATT_MID_DIM, att_mid_drop=cfg.MODEL.BILINEAR.ENCODE_ATT_MID_DROPOUT, dropout=cfg.MODEL.BILINEAR.ENCODE_DROPOUT, layer_num=cfg.MODEL.BILINEAR.ENCODE_LAYERS)
def __init__( self, embed_dim, dropout, att_type, att_heads, att_mid_dim, att_mid_drop, bifeat_emb_act, bifeat_emb_drop, ff_dropout ): super(EncoderLayer, self).__init__() self.encoder_attn = LowRank( embed_dim = embed_dim, att_type = att_type, att_heads = att_heads, att_mid_dim = att_mid_dim, att_mid_drop = att_mid_drop) self.dropout = nn.Dropout(dropout) self.bifeat_emb = nn.Sequential( nn.Linear(2 * embed_dim, embed_dim), utils.activation(bifeat_emb_act), nn.Dropout(bifeat_emb_drop) ) self.layer_norm = torch.nn.LayerNorm(embed_dim) self.ff_layer = blocks.create( 'FeedForward', embed_dim = embed_dim, ffn_embed_dim = embed_dim * 4, relu_dropout = ff_dropout, dropout = ff_dropout)
def initialize(): # Data folder if not os.path.isdir('data'): os.mkdir('data') # Initialization & settings server.initialize() ban.load() server.set_name(SERV_NAME) server.set_port(SERV_PORT) server.set_max_players(SERV_MAX_PLAYERS) server.set_timeout(SERV_TIMEOUT) # Callback server.call_on_message_received(on_message_received) server.set_interpretor_function(exec_instruction) server.call_to_validate_player(validate_player) # Blocks blocks.create()
def __init__( self, embed_dim, dropout, att_type, att_heads, att_mid_dim, att_mid_drop, bifeat_emb_act, bifeat_emb_drop, ff_dropout, last_layer = False ): super(DecoderLayer, self).__init__() self.last_layer = last_layer self.word_attn = LowRank( embed_dim = embed_dim, att_type = att_type, att_heads = att_heads, att_mid_dim = att_mid_dim, att_mid_drop = att_mid_drop) self.word_dropout = nn.Dropout(dropout) self.cross_att = LowRank( embed_dim = embed_dim, att_type = att_type, att_heads = att_heads, att_mid_dim = att_mid_dim, att_mid_drop = att_mid_drop) self.cross_dropout = nn.Dropout(dropout) self.layer_norm_cross = torch.nn.LayerNorm(embed_dim) if self.last_layer == False: self.bifeat_emb = nn.Sequential( nn.Linear(2 * embed_dim, embed_dim), utils.activation(bifeat_emb_act), nn.Dropout(bifeat_emb_drop) ) self.layer_norm_x = torch.nn.LayerNorm(embed_dim) self.ff_layer = blocks.create( 'FeedForward', embed_dim = embed_dim, ffn_embed_dim = embed_dim * 4, relu_dropout = ff_dropout, dropout = ff_dropout) self.layer_norm_gx = torch.nn.LayerNorm(embed_dim)
def __init__(self, args): super(XLAN, self).__init__() self.num_layers = 2 # First LSTM layer rnn_input_size = cfg.MODEL.RNN_SIZE + cfg.MODEL.BILINEAR.DIM self.att_lstm = nn.LSTMCell(rnn_input_size, cfg.MODEL.RNN_SIZE) self.ctx_drop = nn.Dropout(cfg.MODEL.DROPOUT_LM) self.attention = blocks.create( cfg.MODEL.BILINEAR.DECODE_BLOCK, embed_dim=cfg.MODEL.BILINEAR.DIM, att_type=cfg.MODEL.BILINEAR.ATTTYPE, att_heads=cfg.MODEL.BILINEAR.HEAD, att_mid_dim=cfg.MODEL.BILINEAR.DECODE_ATT_MID_DIM, att_mid_drop=cfg.MODEL.BILINEAR.DECODE_ATT_MID_DROPOUT, dropout=cfg.MODEL.BILINEAR.DECODE_DROPOUT, layer_num=cfg.MODEL.BILINEAR.DECODE_LAYERS) self.att2ctx = nn.Sequential( nn.Linear(cfg.MODEL.BILINEAR.DIM + cfg.MODEL.RNN_SIZE, 2 * cfg.MODEL.RNN_SIZE), nn.GLU())