def test_cross_validator_train_model(self, and_dataset): validator = ml.CrossValidator(ml.ForwardFeedNetwork, (2, 1)) ann = ml.ForwardFeedNetwork((2, 1)) error_before = ann.cost(and_dataset) max_epoch = ml.max_epochs(20) validator.model_args = (0.1, max_epoch) validator.train(ann, and_dataset, and_dataset) error_after = ann.cost(and_dataset) assert error_after < error_before
def test_mlp_ann_train_and_logic_function(and_dataset): ann = ml.ForwardFeedNetwork((2, 1)) ann.train(and_dataset, None, 0.2, ml.max_epochs(100)) results = ann.forward_feed(and_dataset[:, :2]) assert results.shape == (4, 1) results = results.reshape(4) assert results[0] < 0.5 assert results[1] < 0.5 assert results[2] < 0.5 assert results[3] > 0.5
def test_cross_validator(xor_dataset): ann_args = {'alpha': 0.1, 'stopping_criteria': ml.max_epochs(5000)} validator = ml.CrossValidator(ml.ForwardFeedNetwork, (2, 2, 1)) validator.run(xor_dataset, 4, **ann_args)
import ml import pickle import mnisttk import logging logging.basicConfig(level=logging.INFO) data = mnisttk.load_train_data("/home/stderr/.mnist") validator = ml.CrossValidator(ml.ForwardFeedNetwork, (28 * 28, 100, 10)) try: models = validator.run(data, 5, 0.4, ml.max_epochs(100)) finally: with open("results/mnist.ann", "wb") as fp: pickle.dump(models, fp)
def test_mlp_ann_train_sanity(self, xor_dataset): ann = ml.ForwardFeedNetwork((2, 2, 1)) training = ann.train(xor_dataset, None, 0.2, ml.max_epochs(5)) assert training.epoch == 5
def test_max_epoch_stopping_criteria(self): Trainer = namedtuple('Trainer', ['epoch']) stopping_function = ml.max_epochs(10) assert not stopping_function(Trainer(9)) assert stopping_function(Trainer(10)) assert stopping_function(Trainer(11))