Пример #1
0
 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)
Пример #2
0
 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)