def test_save_load(): print("========== Test save and load models ==========") np.random.seed(random_seed()) (x_train, y_train), (x_test, y_test) = demo.load_iris() print("Number of training samples = {}".format(x_train.shape[0])) print("Number of testing samples = {}".format(x_test.shape[0])) clf = GLM(model_name="iris_glm_softmax", link='softmax', loss='softmax', random_state=random_seed(), verbose=1) clf.fit(x_train, y_train) print("After training:") train_err = 1.0 - clf.score(x_train, y_train) test_err = 1.0 - clf.score(x_test, y_test) print("Training error = %.4f" % train_err) print("Testing error = %.4f" % test_err) save_file_path = clf.save() clf1 = Model.load_model(save_file_path) print("After save and load:") train_err1 = 1.0 - clf1.score(x_train, y_train) test_err1 = 1.0 - clf1.score(x_test, y_test) print("Training error = %.4f" % train_err1) print("Testing error = %.4f" % test_err1) assert abs(train_err - train_err1) < 1e-6 assert abs(test_err - test_err1) < 1e-6
def test_continue_training(): print("========== Test continue training the models ==========") np.random.seed(random_seed()) (x_train, y_train), (x_test, y_test) = demo.load_iris() print("Number of training samples = {}".format(x_train.shape[0])) print("Number of testing samples = {}".format(x_test.shape[0])) num_epochs = 5 clf = GLM(model_name="iris_glm_softmax", link='softmax', loss='softmax', optimizer='sgd', batch_size=10, num_epochs=num_epochs, random_state=random_seed(), verbose=1) clf.fit(x_train, y_train) print("After training for {0:d} epochs".format(num_epochs)) train_err = 1.0 - clf.score(x_train, y_train) test_err = 1.0 - clf.score(x_test, y_test) print("Training error = %.4f" % train_err) print("Testing error = %.4f" % test_err) clf.num_epochs = 10 print("Set number of epoch to {0:d}, then continue training...".format( clf.num_epochs)) clf.fit(x_train, y_train) train_err = 1.0 - clf.score(x_train, y_train) test_err = 1.0 - clf.score(x_test, y_test) print("Training error = %.4f" % train_err) print("Testing error = %.4f" % test_err) save_file_path = clf.save() clf1 = Model.load_model(save_file_path) clf1.num_epochs = 15 print("Save, load, set number of epoch to {0:d}, " "then continue training...".format(clf.num_epochs)) clf1.fit(x_train, y_train) train_err = 1.0 - clf1.score(x_train, y_train) test_err = 1.0 - clf1.score(x_test, y_test) print("Training error = %.4f" % train_err) print("Testing error = %.4f" % test_err)
def test_glm_save_load(show=False, block_figure_on_end=False): print("========== Test Save and Load functions for GLM ==========") np.random.seed(random_seed()) (x_train, y_train), (x_test, y_test) = demo.load_iris() print("Number of training samples = {}".format(x_train.shape[0])) print("Number of testing samples = {}".format(x_test.shape[0])) x = np.vstack([x_train, x_test]) y = np.concatenate([y_train, y_test]) early_stopping = EarlyStopping(monitor='val_err', patience=5, verbose=1) filepath = os.path.join(model_dir(), "male/GLM/iris_{epoch:04d}_{val_err:.6f}.pkl") checkpoint = ModelCheckpoint(filepath, mode='min', monitor='val_err', verbose=0, save_best_only=True) loss_display = Display(title="Learning curves", dpi='auto', layout=(3, 1), freq=1, show=show, block_on_end=block_figure_on_end, monitor=[ { 'metrics': ['loss', 'val_loss'], 'type': 'line', 'labels': ["training loss", "validation loss"], 'title': "Learning losses", 'xlabel': "epoch", 'ylabel': "loss", }, { 'metrics': ['err', 'val_err'], 'type': 'line', 'title': "Learning errors", 'xlabel': "epoch", 'ylabel': "error", }, { 'metrics': ['err'], 'type': 'line', 'labels': ["training error"], 'title': "Learning errors", 'xlabel': "epoch", 'ylabel': "error", }, ]) weight_display = Display(title="Filters", dpi='auto', layout=(1, 1), figsize=(6, 15), freq=1, show=show, block_on_end=block_figure_on_end, monitor=[ { 'metrics': ['weights'], 'title': "Learned weights", 'type': 'img', 'disp_dim': (2, 2), 'tile_shape': (3, 1), }, ]) clf = GLM( model_name="GLM_softmax_cv", link='softmax', loss='softmax', optimizer='sgd', num_epochs=4, batch_size=10, task='classification', metrics=['loss', 'err'], callbacks=[early_stopping, checkpoint, loss_display, weight_display], cv=[-1] * x_train.shape[0] + [0] * x_test.shape[0], random_state=random_seed(), verbose=1) clf.fit(x, y) train_err = 1.0 - clf.score(x_train, y_train) test_err = 1.0 - clf.score(x_test, y_test) print("Training error = %.4f" % train_err) print("Testing error = %.4f" % test_err) save_file_path = os.path.join(model_dir(), "male/GLM/saved_model.pkl") clf.save(file_path=save_file_path) clf1 = Model.load_model(save_file_path) clf1.num_epochs = 10 clf1.fit(x, y) train_err = 1.0 - clf1.score(x_train, y_train) test_err = 1.0 - clf1.score(x_test, y_test) print("Training error = %.4f" % train_err) print("Testing error = %.4f" % test_err)