예제 #1
0
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
예제 #2
0
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