start=0,
            saturate=momentum_saturate,
            final_momentum=.99  # Dropout=.5->.99 over 500 epochs.
        )
    ]
    # Train
    train = pylearn2.train.Train(dataset=dataset_train,
                                 model=model,
                                 algorithm=algorithm,
                                 extensions=extensions,
                                 save_path=save_path,
                                 save_freq=100)
    return train


def train(mytrain):
    # Execute training loop.
    debug = False
    logfile = os.path.splitext(mytrain.save_path)[0] + '.log'
    print 'Using=%s' % theano.config.device  # Can use gpus.
    print 'Writing to %s' % logfile
    print 'Writing to %s' % mytrain.save_path
    sys.stdout = open(logfile, 'w')
    mytrain.main_loop()


if __name__ == '__main__':
    # Initialize and train.
    mytrain = init_train()
    train(mytrain)
            start=0,
            saturate=momentum_saturate,
            final_momentum=.99  # Dropout=.5->.99 over 500 epochs.
            )
        ]
    # Train
    train = pylearn2.train.Train(dataset=dataset_train,
                                 model=model,
                                 algorithm=algorithm,
                                 extensions=extensions,
                                 save_path=save_path,
                                 save_freq=100)
    return train
    
def train(mytrain):
    # Execute training loop.
    debug = False
    logfile = os.path.splitext(mytrain.save_path)[0] + '.log'
    print 'Using=%s' % theano.config.device # Can use gpus. 
    print 'Writing to %s' % logfile
    print 'Writing to %s' % mytrain.save_path
    sys.stdout = open(logfile, 'w')        
    mytrain.main_loop()


if __name__=='__main__':
    # Initialize and train.
    mytrain = init_train()
    train(mytrain)

    """
    See module-level docstring for a description of the script.
    """
    parser = make_argument_parser()
    args = parser.parse_args()

    if args.outputdir is None:
        clobber = True
        output_dir = args.outputdirc
    else:
        clobber = False
        output_dir = args.outputdir

    try:  #adapted from DREME.py by T. Bailey
        os.makedirs(output_dir)
    except OSError as exc:
        if exc.errno == errno.EEXIST:
            if not clobber:
                print >> sys.stderr, (
                    "output directory (%s) already exists "
                    "but program was told not to clobber it") % (output_dir)
                sys.exit(1)
            else:
                print >> sys.stderr, ("output directory (%s) already exists "
                                      "so it will be clobbered") % (output_dir)

    train(args.inputdir, output_dir, args.activation, args.numhiddenlayers,
          args.numhiddennodesperlayer, args.learningrate, args.minibatchsize,
          args.stdev, args.dropout, args.useX1andX2, args.gaussian,
          args.validsize, args.randomseed)