Esempio n. 1
0
    def __init__(self, input_size,
                 vocab_size,
                 embedding_dim,
                 use_word2vec = False,
                 embedding_weight_path = None,
                 kernel_nums=(100, 100, 100),
                 kernel_sizes=(3, 4, 5),
                 padding=0,
                 dropout=0.5):
        super(CNNModel, self).__init__()

        # no support for pre-trained embedding currently
        self.embeddings = torch.nn.Embedding(input_size, embedding_dim)
        if use_word2vec:
            self.embeddings.weight.data.copy_(
                torch.from_numpy(
                    load_embedding_matrix(embedding_weight_path) 
                ))

        self.conv_pool = encoder.ConvMaxpool(
            in_channels=embedding_dim,
            out_channels=kernel_nums,
            kernel_sizes=kernel_sizes,
            padding=padding)
        self.dropout = nn.Dropout(dropout)
        self.fc1 = torch.nn.Linear(sum(kernel_nums), sum(kernel_nums))
        self.fc2 = torch.nn.Linear(sum(kernel_nums), vocab_size)
        self.fc = torch.nn.Linear(sum(kernel_nums), vocab_size)
Esempio n. 2
0
    def __init__(self, init_embed,
                 num_classes,
                 hidden_size=64,
                 num_layers=1,
                 kernel_nums=(3, 4, 5),
                 kernel_sizes=(3, 4, 5),
                 padding=0,
                 dropout=0.5):
        super(RCNNText, self).__init__()
        
        #embedding
        self.embed = encoder.Embedding(init_embed)
        
        self.conv_pool = encoder.ConvMaxpool(
            in_channels=self.embed.embedding_dim+hidden_size*2,
            out_channels=kernel_nums,
            kernel_sizes=kernel_sizes,
            padding=padding)
#         #RNN layer
        self.lstm = nn.LSTM(
            input_size=self.embed.embedding_dim,
            hidden_size=hidden_size,
            num_layers=num_layers,
            bias=True,
            bidirectional=True
        )
    
        self.dropout = nn.Dropout(dropout)
        self.fc = nn.Linear(sum(kernel_nums), num_classes)
Esempio n. 3
0
 def __init__(self,
              src_embed,
              num_classes,
              kernel_nums=(25, 25, 25),
              kernel_sizes=(3, 4, 5),
              padding=0,
              dropout=0.5):
     super(CNNText, self).__init__()
     self.src_embed = src_embed
     self.conv_pool = encoder.ConvMaxpool(in_channels=src_embed.embed_dim,
                                          out_channels=kernel_nums,
                                          kernel_sizes=kernel_sizes,
                                          padding=padding)
     self.dropout = nn.Dropout(dropout)
     self.fc = nn.Linear(sum(kernel_nums), num_classes)
Esempio n. 4
0
 def __init__(self, init_embed,
              num_classes,
              kernel_nums=(10, 10, 10, 10),
              kernel_sizes=(2, 3, 4, 5),
              padding=0,
              dropout=0.5):
     super(CNNText, self).__init__()
     
     # no support for pre-trained embedding currently
     self.embed = encoder.Embedding(init_embed)
     self.conv_pool = encoder.ConvMaxpool(
         in_channels=self.embed.embedding_dim,
         out_channels=kernel_nums,
         kernel_sizes=kernel_sizes,
         padding=padding)
     self.dropout = nn.Dropout(dropout)
     self.fc = nn.Linear(sum(kernel_nums), num_classes)
Esempio n. 5
0
    def __init__(self,
                 init_embed,
                 num_classes,
                 kernel_nums=(4, 5, 6),
                 kernel_sizes=(3, 4, 5),
                 padding=0,
                 dropout=0.5):
        super(CNN, self).__init__()

        self.embed = encoder.Embedding(init_embed)
        self.conv_pool = encoder.ConvMaxpool(
            in_channels=self.embed.embedding_dim,
            out_channels=kernel_nums,
            kernel_sizes=kernel_sizes,
            padding=padding)
        self.dropout = nn.Dropout(dropout)
        self.fc = nn.Linear(sum(kernel_nums), num_classes)
Esempio n. 6
0
    def __init__(self,
                 vocab_size,
                 input_size,
                 target_size,
                 kernel_num=(3, 4, 5),
                 kernel_size=(3, 4, 5),
                 padding=0,
                 dropout=0.2):
        super(CNN_Text, self).__init__()

        self.embed = encoder.Embedding((vocab_size, input_size))
        self.conv = encoder.ConvMaxpool(in_channels=input_size,
                                        out_channels=kernel_num,
                                        kernel_sizes=kernel_size,
                                        padding=padding)
        self.dropout = nn.Dropout(dropout)
        self.linear = nn.Linear(sum(kernel_num), target_size)
Esempio n. 7
0
    def __init__(self,
                 vocab_size,
                 embedding_dim,
                 num_classes,
                 kernel_nums=(4, 5, 6),
                 kernel_sizes=(4, 5, 6),
                 padding=2,
                 dropout=0.1):
        super().__init__()

        self.embedding = nn.Embedding(vocab_size, embedding_dim)
        self.conv_pool = encoder.ConvMaxpool(
            in_channels=self.embedding.embedding_dim,
            out_channels=kernel_nums,
            kernel_sizes=kernel_sizes,
            padding=padding)
        self.dropout = nn.Dropout(dropout)
        self.fc = nn.Linear(sum(kernel_nums), num_classes)
Esempio n. 8
0
    def __init__(self,
                 vocab_size,
                 embed_dim,
                 num_classes,
                 padding=0,
                 dropout=0.5,
                 kernel_nums=(50, 50, 50),
                 kernel_sizes=(3, 4, 5)):

        super(CNN, self).__init__()
        self.embed_dim = embed_dim
        self.embedding = nn.Embedding(vocab_size, self.embed_dim)
        self.conv_pool = encoder.ConvMaxpool(in_channels=self.embed_dim,
                                             out_channels=kernel_nums,
                                             kernel_sizes=kernel_sizes,
                                             padding=padding)
        self.dropout = nn.Dropout(dropout)
        self.fc = nn.Linear(sum(kernel_nums), num_classes)
    def __init__(self,
                 embed_num,
                 embed_dim,
                 num_classes,
                 kernel_nums=(3, 4, 5),
                 kernel_sizes=(3, 4, 5),
                 padding=0,
                 dropout=0.5):
        super(CNNText, self).__init__()

        # no support for pre-trained embedding currently
        self.embed = encoder.Embedding(embed_num, embed_dim)
        self.conv_pool = encoder.ConvMaxpool(in_channels=embed_dim,
                                             out_channels=kernel_nums,
                                             kernel_sizes=kernel_sizes,
                                             padding=padding)
        self.dropout = nn.Dropout(dropout)
        self.fc = encoder.Linear(sum(kernel_nums), num_classes)
        self._loss = nn.CrossEntropyLoss()
Esempio n. 10
0
    def __init__(self,
                 init_embed,
                 num_classes,
                 vocab,
                 pretrained_weight,
                 kernel_nums=(10, 10, 10, 10),
                 kernel_sizes=(2, 3, 4, 5),
                 padding=0,
                 dropout=0.5):
        super(w2vCNNText, self).__init__()

        # no support for pre-trained embedding currently
        self.word_embeds = nn.Embedding(init_embed[0], init_embed[1])
        pretrained_weight = np.array(pretrained_weight)
        self.word_embeds.weight.data.copy_(torch.from_numpy(pretrained_weight))
        self.conv_pool = encoder.ConvMaxpool(in_channels=init_embed[1],
                                             out_channels=kernel_nums,
                                             kernel_sizes=kernel_sizes,
                                             padding=padding)
        self.dropout = nn.Dropout(dropout)
        self.fc = nn.Linear(sum(kernel_nums), num_classes)
    def __init__(self,
                 embed,
                 num_classes,
                 kernel_nums=(30, 40, 50),
                 kernel_sizes=(1, 3, 5),
                 dropout=0.5):
        r"""

        :param tuple(int,int),torch.FloatTensor,nn.Embedding,numpy.ndarray embed: Embedding的大小(传入tuple(int, int),
            第一个int为vocab_zie, 第二个int为embed_dim); 如果为Tensor, Embedding, ndarray等则直接使用该值初始化Embedding
        :param int num_classes: 一共有多少类
        :param int,tuple(int) kernel_sizes: 输出channel的kernel大小。
        :param float dropout: Dropout的大小
        """
        super(CNNText, self).__init__()

        # no support for pre-trained embedding currently
        self.embed = embedding.Embedding(embed)
        self.conv_pool = encoder.ConvMaxpool(
            in_channels=self.embed.embedding_dim,
            out_channels=kernel_nums,
            kernel_sizes=kernel_sizes)
        self.dropout = nn.Dropout(dropout)
        self.fc = nn.Linear(sum(kernel_nums), num_classes)