def __init__(self, model_dim=None, word_embedding_dim=None, vocab_size=None, initial_embeddings=None, num_classes=None, embedding_keep_rate=None, use_sentence_pair=False, classifier_keep_rate=None, mlp_dim=None, num_mlp_layers=None, mlp_ln=None, context_args=None, gated=None, selection_keep_rate=None, pyramid_selection_keep_rate=None, **kwargs): super(Pyramid, self).__init__() self.use_sentence_pair = use_sentence_pair self.model_dim = model_dim self.gated = gated self.selection_keep_rate = selection_keep_rate classifier_dropout_rate = 1. - classifier_keep_rate args = Args() args.size = model_dim args.input_dropout_rate = 1. - embedding_keep_rate vocab = Vocab() vocab.size = initial_embeddings.shape[ 0] if initial_embeddings is not None else vocab_size vocab.vectors = initial_embeddings self.embed = Embed(word_embedding_dim, vocab.size, vectors=vocab.vectors) self.composition_fn = SimpleTreeLSTM(model_dim / 2, composition_ln=False) self.selection_fn = Linear(initializer=HeKaimingInitializer)(model_dim, 1) # TODO: Set up layer norm. mlp_input_dim = model_dim * 2 if use_sentence_pair else model_dim self.mlp = MLP(mlp_input_dim, mlp_dim, num_classes, num_mlp_layers, mlp_ln, classifier_dropout_rate) self.encode = context_args.encoder self.reshape_input = context_args.reshape_input self.reshape_context = context_args.reshape_context
def __init__(self, model_dim=None, word_embedding_dim=None, vocab_size=None, initial_embeddings=None, num_classes=None, embedding_keep_rate=None, use_sentence_pair=False, classifier_keep_rate=None, mlp_dim=None, num_mlp_layers=None, mlp_bn=None, context_args=None, **kwargs): super(BaseModel, self).__init__() self.use_sentence_pair = use_sentence_pair self.model_dim = model_dim classifier_dropout_rate = 1. - classifier_keep_rate args = Args() args.size = model_dim args.input_dropout_rate = 1. - embedding_keep_rate vocab = Vocab() vocab.size = initial_embeddings.shape[ 0] if initial_embeddings is not None else vocab_size vocab.vectors = initial_embeddings self.embed = Embed(word_embedding_dim, vocab.size, vectors=vocab.vectors) self.rnn = nn.LSTM(args.size, model_dim, num_layers=1, batch_first=True) mlp_input_dim = model_dim * 2 if use_sentence_pair else model_dim self.mlp = MLP(mlp_input_dim, mlp_dim, num_classes, num_mlp_layers, mlp_bn, classifier_dropout_rate) self.encode = context_args.encoder self.reshape_input = context_args.reshape_input self.reshape_context = context_args.reshape_context