Esempio n. 1
0
    def __init__(self, config):
        super(BertForSequenceClassification, self).__init__(config)
        self.num_labels = config.num_labels
        self.bert = BertModel(config)
        self.dropout = nn.Dropout(config.hidden_dropout_prob)
        self.batch_size = 32
        self.hidden_size = config.hidden_size

        self.num_layers = 2

        n_filters = 200
        filter_sizes = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        self.classifier = nn.Linear(
            len(filter_sizes) * n_filters * 3 + config.hidden_size * 3 +
            config.hidden_size * 3, config.num_labels)
        self.convs = TextCNN1D(config.hidden_size, n_filters, filter_sizes)
        self.resnet = ResnetCNN1D(config.hidden_size)
        # 最后的全连接层
        self.fc = nn.Sequential(
            nn.Linear(
                len(filter_sizes) * n_filters * 3 * 2, config.hidden_size),
            nn.ReLU(inplace=True), nn.Dropout(0.5),
            nn.Linear(config.hidden_size, self.num_labels))
        self.layer_norm = nn.LayerNorm(self.hidden_size)
        self.FeedForward2 = nn.Sequential(

            # nn.BatchNorm1d(num_features=self.channel_size),
            nn.Linear(self.hidden_size, self.hidden_size),
            nn.ReLU(inplace=True),
            nn.Dropout(0.1))
        self.triple_attention = TripleAttentionHighWay(
            hidden_size=self.hidden_size)
        self.self_attention = ScaledDotProductAttention()
        self.apply(self.init_weights)
Esempio n. 2
0
    def __init__(self, config):
        super(BertForSequenceClassification, self).__init__(config)
        self.num_labels = config.num_labels
        self.bert = BertModel(config)
        self.dropout = nn.Dropout(config.hidden_dropout_prob)
        self.batch_size = 32
        self.hidden_size = config.hidden_size

        rnn_hidden_size = 768
        num_layers = 2
        dropout = 0.2

        self.rnn = nn.LSTM(config.hidden_size * 3,
                           rnn_hidden_size,
                           num_layers,
                           bidirectional=True,
                           batch_first=True,
                           dropout=dropout)

        self.W2 = nn.Linear(config.hidden_size + 2 * rnn_hidden_size,
                            config.hidden_size)
        # self.classifier = nn.Linear(rnn_hidden_size * 2, config.num_labels)

        n_filters = 200
        filter_sizes = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        self.classifier = nn.Linear(
            len(filter_sizes) * n_filters * 3 + config.hidden_size * 3 +
            config.hidden_size * 3, config.num_labels)
        self.convs = TextCNN1D(config.hidden_size * 3, n_filters, filter_sizes)

        # 最后的全连接层
        self.fc = nn.Sequential(
            nn.Linear(
                len(filter_sizes) * n_filters * 3 + config.hidden_size * 3 +
                config.hidden_size * 3, config.hidden_size),
            nn.ReLU(inplace=True), nn.Dropout(0.5),
            nn.Linear(config.hidden_size, self.num_labels))
        self.layer_norm = nn.LayerNorm(self.hidden_size)
        self.FeedForward2 = nn.Sequential(

            # nn.BatchNorm1d(num_features=self.channel_size),
            nn.Linear(self.hidden_size, self.hidden_size),
            nn.ReLU(inplace=True),
            nn.Dropout(0.1))
        self.triple_attention = TripleAttention(hidden_size=self.hidden_size)

        self.kmax_pooling = KMaxPooling1D(k=5)

        self.self_attention = ScaledDotProductAttention()
        self.apply(self.init_weights)