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
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.")
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
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)
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" %