(Xtrain, ytrain), (Xval, yval), (Xtest, ytest) = load_mnist() criterion = df.ClassNLLCriterion() def run(optim): progress = make_progressbar('Training with ' + str(optim), 5) progress.start() model = net() model.training() for epoch in range(5): train(Xtrain, ytrain, model, optim, criterion, batch_size, 'train') train(Xtrain, ytrain, model, optim, criterion, batch_size, 'stats') progress.update(epoch + 1) progress.finish() model.evaluate() nll, _ = test(Xtrain, ytrain, model, batch_size) _, nerr = test(Xval, yval, model, batch_size) print("Trainset NLL: {:.2f}".format(nll)) print("Testset errors: {}".format(nerr)) run(df.SGD(lr=1e-1)) run(df.Momentum(lr=1e-2, momentum=0.95)) run(df.Nesterov(lr=1e-2, momentum=0.90)) run(df.AdaGrad(lr=1e-2, eps=1e-4)) run(df.RMSProp(lr=1e-3, rho=0.90, eps=1e-5)) run(df.AdaDelta(rho=0.99, lr=5e-1, eps=1e-4))
model.add(df.Linear(512, 9)) model.add(df.SoftMax()) return model if __name__ == "__main__": if __package__ is None: # PEP366 __package__ = "DeepFried2.examples.KaggleOtto" train_data_x, train_data_y = load_train_data() train_data_x, valid_data_x, train_data_y, valid_data_y = train_test_split( train_data_x, train_data_y, train_size=0.85) model = nnet() criterion = df.ClassNLLCriterion() optimiser = df.Momentum(lr=0.01, momentum=0.9) for epoch in range(1, 1001): model.training() if epoch % 100 == 0: optimiser.hyperparams['lr'] /= 10 train(train_data_x, train_data_y, model, optimiser, criterion, epoch, 100, 'train') train(train_data_x, train_data_y, model, optimiser, criterion, epoch, 100, 'stats') model.evaluate() validate(valid_data_x, valid_data_y, model, epoch, 100)