Esempio n. 1
0
def main():

    args = parser.parse_args()
    print('Options:')
    for (key, value) in iteritems(vars(args)):
        print("{:12}: {}".format(key, value))

    assert os.path.exists(args.xp_dir)

    # default value for basefile: string basis for all exported file names
    if args.out_name:
        base_file = "{}/{}".format(args.xp_dir, args.out_name)
    else:
        base_file = "{}/{}_{}_{}".format(args.xp_dir, args.dataset,
                                         args.solver, args.loss)

    # if pickle file already there, consider run already done
    if (os.path.exists("{}_weights.p".format(base_file))
            and os.path.exists("{}_results.p".format(base_file))):
        sys.exit()

    # computation device
    if 'gpu' in args.device:
        try:  # Theano-1.0.2
            theano.gpuarray.use(args.device)
        except:  # Theano-0.8.2
            theano.sandbox.cuda.use(args.device)

    np.random.seed(args.seed)

    # set save_at to n_epochs if not provided
    save_at = args.n_epochs if not args.save_at else args.save_at

    log_file = "{}/log_{}.txt".format(args.xp_dir, args.dataset)
    save_to = "{}_weights.p".format(base_file)
    weights = "{}/{}_weights.p".format(args.xp_dir, args.in_name) \
        if args.in_name else None

    # update config data
    Cfg.C.set_value(args.C)
    Cfg.batch_size = args.batch_size
    Cfg.compile_lwsvm = False
    Cfg.learning_rate.set_value(args.lr)
    Cfg.softmax_loss = (args.loss == 'ce')

    # train
    nnet = NeuralNet(dataset=args.dataset, use_weights=weights)
    nnet.train(solver=args.solver,
               n_epochs=args.n_epochs,
               save_at=save_at,
               save_to=save_to)

    # log
    nnet.log.save_to_file("{}_results.p".format(base_file))
    nnet.dump_weights("{}_final_weights.p".format(base_file))

    logged = open(log_file, "a")
    logged.write("{}\t{}\t{}: OK\n".format(args.dataset, args.solver,
                                           args.loss))
    logged.close()
Esempio n. 2
0
def main():

    args = parser.parse_args()
    print('Options:')
    for (key, value) in iteritems(vars(args)):
        print("{:12}: {}".format(key, value))

    assert os.path.exists(args.xp_dir)

    Cfg.C.set_value(args.C)
    Cfg.D.set_value(args.D)
    Cfg.batch_size = args.batch_size
    Cfg.compile_lwsvm = True
    Cfg.softmax_loss = False

    # default value for basefile: string basis for all exported file names
    if args.out_name:
        base_file = "{}/{}".format(args.xp_dir, args.out_name)
    else:
        base_file = "{}/{}_lwsvm".format(args.xp_dir, args.in_name)

    # if pickle file already there, consider run already done
    if (os.path.exists("{}_final_weights.p".format(base_file))
            and os.path.exists("{}_results.p".format(base_file))):
        sys.exit()

    # computation device
    if 'gpu' in args.device:
        try:  # Theano-1.0.2
            theano.gpuarray.use(args.device)
        except:  # Theano-0.8.2
            theano.sandbox.cuda.use(args.device)

    np.random.seed(args.seed)

    log_file = "{}/log_{}.txt".format(args.xp_dir, args.dataset)
    if args.dataset != 'imagenet':
        weights = "{}/{}_weights.p".format(args.xp_dir, args.in_name)
    else:
        weights = "{}/vgg16.pkl".format(args.xp_dir)

    nnet = NeuralNet(dataset=args.dataset, use_weights=weights)
    nnet.train(solver="svm")

    # log
    nnet.log.save_to_file("{}_results.p".format(base_file))
    nnet.dump_weights("{}_final_weights.p".format(base_file))

    logged = open(log_file, "a")
    logged.write("{}\t{}\tlwsvm: OK\n".format(args.dataset, args.in_name))
    logged.close()