def MNISTmain(): # TODO: max_col_norm h0 = maxout.Maxout(layer_name='h0', num_units=1200, num_pieces=2, W_lr_scale=1.0, irange=0.005, b_lr_scale=1.0) h1 = maxout.Maxout(layer_name='h1', num_units=1200, num_pieces=2, W_lr_scale=1.0, irange=0.005, b_lr_scale=1.0) # h2 = maxout.Maxout(layer_name='h2, num_units=1200, num_pieces=2, W_lr_scale=1.0, irange=0.005, b_lr_scale=1.0) outlayer = mlp.Softmax(layer_name='y', n_classes=10, irange=0) # layers = [h0, h1, h2, outlayer] layers = [h0, h1, outlayer] model = mlp.MLP(layers, nvis=784) train = MNIST('train', one_hot=1, start=0, stop=50000) valid = MNIST('train', one_hot=1, start=50000, stop=60000) test = MNIST('test', one_hot=1, start=0, stop=10000) monitoring = dict(valid=valid) termination = MonitorBased(channel_name="valid_y_misclass", N=100) extensions = [best_params.MonitorBasedSaveBest(channel_name="valid_y_misclass", save_path="/data/mcr10/train_best.pkl")] algorithm = sgd.SGD(0.1, batch_size=100, cost=Dropout(), monitoring_dataset = monitoring, termination_criterion = termination) save_path = "/data/mcr10/train_best.pkl" if not args.train and os.path.exists(save_path): model = serial.load(save_path) else: print 'Running training' train_job = Train(train, model, algorithm, extensions=extensions, save_path="/data/mcr10/train.pkl", save_freq=1) train_job.main_loop() X = model.get_input_space().make_batch_theano() Y = model.fprop(X) y = T.argmax(Y, axis=1) f = function(inputs=[X], outputs=y) yhat = f(test.X) y = np.squeeze(test.get_targets()) print 'accuracy', (y==yhat).sum() / y.size
model = mlp.MLP(layers, nvis=784) train = MNIST('train', one_hot=1, start=0, stop=50000) valid = MNIST('train', one_hot=1, start=50000, stop=60000) test = MNIST('test', one_hot=1, start=0, stop=10000) monitoring = dict(valid=valid) termination = MonitorBased(channel_name="valid_y_misclass") extensions = [best_params.MonitorBasedSaveBest(channel_name="valid_y_misclass", save_path="train_best.pkl")] algorithm = bgd.BGD(batch_size=10000, line_search_mode = 'exhaustive', conjugate = 1, monitoring_dataset = monitoring, termination_criterion = termination) save_path = "train_best.pkl" if os.path.exists(save_path): model = serial.load(save_path) else: print 'Running training' train_job = Train(train, model, algorithm, extensions=extensions, save_path="train.pkl", save_freq=1) train_job.main_loop() X = model.get_input_space().make_batch_theano() Y = model.fprop(X) y = T.argmax(Y, axis=1) f = function([X], y) yhat = f(test.X) y = np.where(test.get_targets())[1] print 'accuracy', (y==yhat).sum() / y.size