def __init__(self, word_vocab_size, word_embedding_dim, word_out_channels, char_vocab_size, char_embedding_dim, char_out_channels, decoder_hidden_units, tag_to_id, cap_input_dim=4, cap_embedding_dim=0, pretrained=None): super(CNN_CNN_LSTM, self).__init__() self.word_vocab_size = word_vocab_size self.word_embedding_dim = word_embedding_dim self.word_out_channels = word_out_channels self.char_vocab_size = char_vocab_size self.char_embedding_dim = char_embedding_dim self.char_out_channels = char_out_channels self.cap_input_dim = cap_input_dim self.cap_embedding_dim = cap_embedding_dim self.tag_to_ix = tag_to_id self.tagset_size = len(tag_to_id) self.initializer = Initializer() self.loader = Loader() if self.cap_input_dim and self.cap_embedding_dim: self.cap_embedder = nn.Embedding(self.cap_input_dim, self.cap_embedding_dim) self.initializer.init_embedding(self.cap_embedder.weight) self.char_encoder = CharEncoderCNN(char_vocab_size, char_embedding_dim, char_out_channels, kernel_width=3, pad_width=1) self.initializer.init_embedding(self.char_encoder.embedding.weight) self.word_encoder = WordEncoderCNN(word_vocab_size, word_embedding_dim, char_out_channels, kernel_width = 5, pad_width = 2, input_dropout_p=0.5, output_dropout_p=0.5, out_channels=word_out_channels) if pretrained is not None: self.word_encoder.embedding.weight = nn.Parameter(torch.FloatTensor(pretrained)) augmented_decoder_inp_size = (word_out_channels + word_embedding_dim + char_out_channels + cap_embedding_dim) self.decoder = DecoderRNN(augmented_decoder_inp_size, decoder_hidden_units, self.tagset_size, self.tag_to_ix, input_dropout_p=0.5)
def __init__(self, word_vocab_size, word_embedding_dim, word_hidden_dim, char_vocab_size, char_embedding_dim, char_out_channels, tag_to_id, cap_input_dim=4 , cap_embedding_dim=0, pretrained=None): super(CNN_BiLSTM_CRF_MC, self).__init__() self.word_vocab_size = word_vocab_size self.word_embedding_dim = word_embedding_dim self.word_hidden_dim = word_hidden_dim self.char_vocab_size = char_vocab_size self.char_embedding_dim = char_embedding_dim self.char_out_channels = char_out_channels self.cap_input_dim = cap_input_dim self.cap_embedding_dim = cap_embedding_dim self.tag_to_ix = tag_to_id self.tagset_size = len(tag_to_id) self.initializer = Initializer() self.loader = Loader() if self.cap_embedding_dim: self.cap_embedder = nn.Embedding(self.cap_input_dim, self.cap_embedding_dim) self.initializer.init_embedding(self.cap_embedder.weight) self.char_encoder = CharEncoderCNN(char_vocab_size, char_embedding_dim, char_out_channels, kernel_width=3, pad_width=1) self.initializer.init_embedding(self.char_encoder.embedding.weight) self.word_encoder = WordEncoderRNN(word_vocab_size, word_embedding_dim ,word_hidden_dim, char_out_channels, cap_embedding_dim, input_dropout_p=0.5) if pretrained is not None: self.word_encoder.embedding.weight = nn.Parameter(torch.FloatTensor(pretrained)) self.initializer.init_lstm(self.word_encoder.rnn) self.decoder = DecoderCRF(word_hidden_dim*2, self.tag_to_ix, input_dropout_p=0.5) self.initializer.init_linear(self.decoder.hidden2tag)