コード例 #1
0
ファイル: nn.py プロジェクト: joydeb28/NLP
def train_model(model):

    for epoch in range(epochs):
        print("Epoch %d/%d" % (epoch, epochs))
        a = Progbar(len(train_batch_len))
        for i, batch in enumerate(
                iterate_minibatches(train_batch, train_batch_len)):
            labels, tokens, casing, char = batch
            model.train_on_batch([tokens, casing, char], labels)
            a.update(i)
        print(' ')
    return model
コード例 #2
0
    def train(self):
        """Default training"""

        self.f1_test_history = []
        self.f1_dev_history = []

        for epoch in range(self.epochs):
            print("Epoch {}/{}".format(epoch, self.epochs))
            for i, batch in enumerate(
                    iterate_minibatches(self.train_batch,
                                        self.train_batch_len)):
                labels, tokens, casing, char = batch
                self.model.train_on_batch([tokens, casing, char], labels)

            # compute F1 scores
            predLabels, correctLabels = self.tag_dataset(
                self.test_batch, self.model)
            pre_test, rec_test, f1_test = compute_f1(predLabels, correctLabels,
                                                     self.idx2Label)
            self.f1_test_history.append(f1_test)
            print("f1 test ", round(f1_test, 4))

            predLabels, correctLabels = self.tag_dataset(
                self.dev_batch, self.model)
            pre_dev, rec_dev, f1_dev = compute_f1(predLabels, correctLabels,
                                                  self.idx2Label)
            self.f1_dev_history.append(f1_dev)
            print("f1 dev ", round(f1_dev, 4), "\n")

        print("Final F1 test score: ", f1_test)

        print("Training finished.")

        # save model
        self.modelName = "{}_{}_{}_{}_{}_{}_{}".format(
            self.epochs, self.dropout, self.dropout_recurrent,
            self.lstm_state_size, self.conv_size, self.learning_rate,
            self.optimizer.__class__.__name__)

        modelName = self.modelName + ".h5"
        self.model.save(modelName)
        print("Model weights saved.")

        self.model.set_weights(self.init_weights)  # clear model
        print("Model weights cleared.")
コード例 #3
0
ファイル: helper.py プロジェクト: avinik/Al
def train(model, train_set, epochs, package):
    train_batch, train_batch_len = createBatches(train_set)

    for epoch in range(epochs):
        print("Epoch %d/%d" % (epoch, epochs))
        a = Progbar(len(train_batch_len))
        for i, batch in enumerate(
                iterate_minibatches(train_batch, train_batch_len)):
            labels, tokens, casing, char = batch
            if package.modelName == "LSTM_word":
                with tf.device('/gpu:0'):
                    model.fit([tokens], labels, verbose=0)
            elif package.modelName == "LSTM_word_char":
                with tf.device('/gpu:0'):
                    model.fit([tokens, casing, char], labels, verbose=0)
            a.update(i)
        print(' ')
    return model
コード例 #4
0
ファイル: nn.py プロジェクト: sweetpand/NLP-Best-Practices
char = Dropout(0.5)(char)
output = concatenate([words, casing, char])
output = Bidirectional(
    LSTM(200, return_sequences=True, dropout=0.50,
         recurrent_dropout=0.25))(output)
output = TimeDistributed(Dense(len(label2Idx), activation='softmax'))(output)
model = Model(inputs=[words_input, casing_input, character_input],
              outputs=[output])
model.compile(loss='sparse_categorical_crossentropy', optimizer='nadam')
model.summary()
# plot_model(model, to_file='model.png')

for epoch in range(epochs):
    print("Epoch %d/%d" % (epoch, epochs))
    a = Progbar(len(train_batch_len))
    for i, batch in enumerate(iterate_minibatches(train_batch,
                                                  train_batch_len)):
        labels, tokens, casing, char = batch
        model.train_on_batch([tokens, casing, char], labels)
        a.update(i)
    a.update(i + 1)
    print(' ')

model.save("models/model.h5")

#   Performance on dev dataset
predLabels, correctLabels = tag_dataset(dev_batch)
pre_dev, rec_dev, f1_dev = compute_f1(predLabels, correctLabels, idx2Label)
print("Dev-Data: Prec: %.3f, Rec: %.3f, F1: %.3f" % (pre_dev, rec_dev, f1_dev))

#   Performance on test dataset
predLabels, correctLabels = tag_dataset(test_batch)
コード例 #5
0
ファイル: nn.py プロジェクト: topolphukhanh/aiclass
    output = concatenate([words, casing, char])
    output = Bidirectional(
        LSTM(200, return_sequences=True, dropout=0.50,
             recurrent_dropout=0.25))(output)
    output = TimeDistributed(Dense(len(label2Idx),
                                   activation='softmax'))(output)
    model = Model(inputs=[words_input, casing_input, character_input],
                  outputs=[output])
    model.compile(loss='sparse_categorical_crossentropy', optimizer='nadam')
    model.summary()
    # plot_model(model, to_file='model.png')

    for epoch in range(epochs):
        print("Epoch %d/%d" % (epoch, epochs))
        for i, batch in enumerate(
                iterate_minibatches(train_batch, train_batch_len)):
            labels, tokens, casing, char = batch
            model.train_on_batch([tokens, casing, char], labels)
        print(' ')

    #   Performance on dev dataset
    predLabels, correctLabels = tag_dataset(dev_batch)
    pre_dev, rec_dev, f1_dev = compute_f1(predLabels, correctLabels, idx2Label)
    print("Dev-Data: Prec: %.3f, Rec: %.3f, F1: %.3f" %
          (pre_dev, rec_dev, f1_dev))

    #   Performance on test dataset
    predLabels, correctLabels = tag_dataset(test_batch)
    pre_test, rec_test, f1_test = compute_f1(predLabels, correctLabels,
                                             idx2Label)
    print("Test-Data: Prec: %.3f, Rec: %.3f, F1: %.3f" %