示例#1
0
def main(args):
    if cuda.is_available():
        cuda.set_device(int(args.gpu_num))
        cudnn.benchmark = True

    start_time = time.time()

    dp = DataProcessor(args.src_lang, args.trg_lang)
    train_dataset, valid_dataset, test_dataset, vocabs = dp.load_data(
        'fra.txt', 'english_french.pkl')

    print("Elapsed Time: %1.3f \n" % (time.time() - start_time))

    print("=========== Data Stat ===========")
    print("Train: ", len(train_dataset))
    print("Valid: ", len(valid_dataset))
    print("Test: ", len(test_dataset))
    print("=================================")

    train_loader = data.BucketIterator(dataset=train_dataset,
                                       batch_size=args.batch_size,
                                       repeat=False,
                                       shuffle=True,
                                       sort_within_batch=True,
                                       sort_key=lambda x: len(x.src))

    val_loader = data.BucketIterator(dataset=valid_dataset,
                                     batch_size=args.batch_size,
                                     repeat=False,
                                     shuffle=True,
                                     sort_within_batch=True,
                                     sort_key=lambda x: len(x.src))

    trainer = Trainer(train_loader, val_loader, vocabs, args)
    trainer.train()
示例#2
0
def main():

	parser = argparse.ArgumentParser()
	parser.add_argument('--epoches', '-e', type=int, default=10, help='Number of training epoches')
	parser.add_argument('--batch', '-b', type=int, default=16, help='Size of batches')
	parser.add_argument('--samples', '-s', type=int, default=1000, help='Number of samples')
	parser.add_argument('--lr', '-l', type=float, default=0.001, help='Learning rate')
	args = parser.parse_args()

	if not os.path.exists('save/'):
		os.mkdir('save/')

	if args.batch > args.samples:
		raise Exception("Batch size cannot be larger than total number of samples in dataset")

	if type(args.epoches) != int:
		raise Exception("Epoches number be an integer. Given "+str(type(args.epoches)))

	if args.samples < 1000:
		raise Exception("Insufficient training data. Sample size %d < 1000"%args.samples)

	train_config = {'epochs': args.epoches, 'batchs': args.batch, 'samples':args.samples, 'lr': args.lr}

	model = FullyConnected()

	t = Trainer(model, train_config)
	t.train()
示例#3
0
def main(config):

    data = data_loader(config)
    data_len, X, y, X_val, y_Val = data.preprocess()
    trainer = Trainer(config, data_len, X, y, X_val, y_Val)
    trainer.train()
    trainer.show_result()
示例#4
0
 def __init__(self):
     """
     constructor
     """
     self.__pre_processor = PreProcessor()
     self.__trainer = Trainer()
     self.__predictor = Predictor()
示例#5
0
文件: main.py 项目: Justkim/mario_DQN
def main():
    if flag.MARIO_ENV:
        env = mario_env.make_train_0()

    if flag.TRAIN:

        new_trainer = Trainer(num_training_steps=200000,
                              num_epoch=3,
                              batch_size=16,
                              learning_rate=0.0001,
                              discount_factor=0.99,
                              env=env,
                              num_action=7,
                              save_interval=100,
                              log_interval=50,
                              decay_rate=0.001,
                              num_steps=16,
                              memory_size=10000,
                              update_target_net_interval=5)

        new_trainer.collect_experience_and_train()

    elif flag.PLAY:
        new_player = Player(env=env,
                            load_path='./step5500-20191027-162213/train')
        new_player.play()
示例#6
0
 def process(self):
     """
     Trains different model based on a csv-data containing the hyper_params.
     If a model is trained, results, parameters of model, coefficient mask and the hyperparaemters are saved
     in analysis_folder. Models are numbered in the same ordered as they are in the hyper_params.csv.
     """
     rng = jax.random.PRNGKey(-1)
     rng_batch = npr.RandomState(5)
     for j, hyper_params in self.hyper_params_df.iterrows():
         hyper_params = hyper_params.to_dict()
         path_save = self.analysis_folder + '/' + str(j)
         if os.path.isfile(path_save):
             continue
         else:
             loader = Loader(hyper_params)
             train_set = hyper_params['training_set']
             X, dX, X_eval, dX_eval, t = self.data[train_set]
             loader.hyper_params['num_batches'], _ = divmod(
                 X.shape[0], loader.hyper_params['batch_size'])
             loader.hyper_params['x_dim'] = X.shape[1]
             model, hyper_params = loader.create_model(rng)
             trainer = Trainer(X, dX, X_eval, dX_eval, t, model,
                               hyper_params)
             results, params, coeff_mask = trainer.fit(rng_batch)
             with open(path_save, 'wb') as fp:
                 pickle.dump([results, params, coeff_mask, hyper_params],
                             fp)
示例#7
0
def main():

    config = None
    try:
        args = get_args()
        config = process_config(args.config)

        if config is None:
            raise Exception()
    except:
        print("Add a config file using \'--config file_name.json\'")
        exit(1)

    makedirs(config.summary_dir)
    makedirs(config.checkpoint_dir)

    logger = get_logger('log',
                        logpath=config.summary_dir,
                        filepath=os.path.abspath(__file__))

    train_loader, test_loader = load_pytorch(config)

    model = PolyGNN(state_dim=128,
                    n_adj=4,
                    coarse_to_fine_steps=config.coarse_to_fine_steps,
                    get_point_annotation=False)

    trainer = Trainer(model, train_loader, test_loader, config, logger)

    if config.train:
        trainer.train()

    if config.validation:
        trainer.resume(os.path.join(config.checkpoint_dir, 'model.pth'))
        trainer.test_epoch(cur_epoch=999, plot=True)
示例#8
0
def main():
    # Create Model, Criterion and State
    model, criterion, state = create_model(args)
    print("=> Model and criterion are ready")

    # Create Dataloader
    if not args.test_only:
        train_loader = get_train_loader(args)
    val_loader = get_test_loader(args)
    print("=> Dataloaders are ready")

    # Create Logger
    logger = Logger(args, state)
    print("=> Logger is ready")  # Create Trainer
    trainer = Trainer(args, model, criterion, logger)
    print("=> Trainer is ready")

    if args.test_only:
        test_summary = trainer.test(0, val_loader)
        print("- Test:  Acc %6.3f " % (test_summary['acc']))
    else:
        start_epoch = logger.state['epoch'] + 1
        print("=> Start training")
        # test_summary = trainer.test(0, val_loader)

        for epoch in range(start_epoch, args.n_epochs + 1):
            train_summary = trainer.train(epoch, train_loader)
            test_summary = trainer.test(epoch, val_loader)

            logger.record(epoch, train_summary, test_summary, model)

        logger.final_print()
示例#9
0
def train(opt, trial):
    model = getattr(models, opt.netType)(opt.nClasses)
    model.to_gpu()
    optimizer = chainer.optimizers.NesterovAG(lr=opt.LR, momentum=opt.momentum)
    optimizer.setup(model)
    optimizer.add_hook(chainer.optimizer.WeightDecay(opt.weightDecay))
    train_iter, val_iter = dataset.setup(opt)
    trainer = Trainer(model, optimizer, train_iter, val_iter, opt)

    for epoch in range(1, opt.nEpochs + 1):
        train_loss, train_top1 = trainer.train(epoch)
        val_top1 = trainer.val()
        sys.stderr.write('\r\033[K')
        sys.stdout.write(
            '| Epoch: {}/{} | Train: LR {}  Loss {:.3f}  top1 {:.2f} | Val: top1 {:.2f}\n'
            .format(epoch, opt.nEpochs, trainer.optimizer.lr, train_loss,
                    train_top1, val_top1))
        sys.stdout.flush()

    if opt.save != 'None':
        chainer.serializers.save_npz(
            os.path.join(opt.save, 'model_trial{}.npz'.format(trial)), model)
        chainer.serializers.save_npz(
            os.path.join(opt.save, 'optimizer_trial{}.npz'.format(trial)),
            optimizer)
示例#10
0
def main():

    config = None
    try:
        args = get_args()
        config = process_config(args.config)

        if config is None:
            raise Exception()
    except:
        print("Add a config file using \'--config file_name.json\'")
        exit(1)

    makedirs(config.summary_dir)
    makedirs(config.checkpoint_dir)

    logger = get_logger('log', logpath=config.summary_dir, filepath=os.path.abspath(__file__))

    train_labelled_data_loader, train_unlabelled_data_loader, test_loader = load_pytorch(config)

    model = SDNet(config.image_size, config.num_anatomical_factors, config.num_modality_factors, config.num_classes)
    print(model)
    trainer = Trainer(model, train_labelled_data_loader, train_unlabelled_data_loader, test_loader, config, logger)

    if config.train:
        trainer.train()

    if config.validation:
        trainer.resume(os.path.join(config.checkpoint_dir, 'model.pth'))

        trainer.test_epoch(debug=False)
示例#11
0
def main():
    index = 0
    args = sys.argv
    if len(args) > 1:
        if args[1].replace(',', '').replace('.', '').replace('-', '').isdigit():
            index = int(args[1])
        else:
            print("----------------------------------")
            print("")
            print("Argument is not digit")
            print("Set index to 0")
            print("")
            print("----------------------------------")
    else:
        print("----------------------------------")
        print("")
        print("Arguments are too short")
        print("Set index to 0")
        print("")
        print("----------------------------------")
    setting_csv_path = "./setting.csv"
    trainer = Trainer(setting_csv_path=setting_csv_path, index=index)
    if not os.path.isfile(os.path.join(trainer.log_path, trainer.model_name, trainer.model_name)):
        print("Trained weight file does not exist")
        trainer.train()
def training():
    train_dataset = TrainDataset(
        image_dir=args.train_data_dir,
        csv_path_train=
        f'data/dataset_csv/list_combined_{args.train_type}_small_train.tsv',
        csv_path_val=
        f'data/dataset_csv/list_combined_{args.train_type}_small_val.tsv',
        train_type=args.train_type,
        batch_size=16,
        shuffle=True,
        random_seed=60,
        image_shape=args.input_shape)

    fm = FashionModel()
    fm.create_model(num_classes=train_dataset.num_classes,
                    input_shape=[args.input_shape[0], args.input_shape[1], 3])
    if args.checkpoint is not None:
        fm.model.load_weights(args.checkpoint)

    fm.model.summary()

    trainer = Trainer(model=fm.model,
                      train_gen=train_dataset.train_generator,
                      val_gen=train_dataset.validation_generator,
                      epoch=args.epoch,
                      step=args.step)
    trainer.train(log_dir=args.log_dir)
示例#13
0
def train_func(config):
    # Hyperparameters
    bindings = []
    for key, value in config.items():
        bindings.append(f'{key}={value}')

    # generate folder structures
    run_paths = utils_params.gen_run_folder(bindings[2])

    # set loggers
    utils_misc.set_loggers(run_paths['path_logs_train'], logging.INFO)

    # gin-config
    # gin dir should be replaced by your own dir
    gin.parse_config_files_and_bindings([r'D:\Uni Stuttgart\Deep learning lab\Diabetic Retinopathy Detection\dl-lab-2020-team08\diabetic_retinopathy\configs\config.gin'],
                                        bindings)
    utils_params.save_config(run_paths['path_gin'], gin.config_str())

    # setup pipeline
    train_ds, valid_ds, test_ds = datasets.load()

    # model
    model = DenseNet121(IMG_SIZE=256)

    trainer = Trainer(model=model, ds_train=train_ds, ds_val=test_ds, run_paths=run_paths)
    for val_accuracy in trainer.train():
        tune.report(val_accuracy=val_accuracy)
示例#14
0
def train_func(config):
    # Hyperparameters
    bindings = []
    for key, value in config.items():
        bindings.append(f'{key}={value}')

    # generate folder structures
    run_paths = utils_params.gen_run_folder(','.join(bindings))

    # set loggers
    utils_misc.set_loggers(run_paths['path_logs_train'], logging.INFO)

    # gin-config
    gin.parse_config_files_and_bindings(['/mnt/home/repos/dl-lab-skeleton/diabetic_retinopathy/configs/config.gin'], bindings)
    utils_params.save_config(run_paths['path_gin'], gin.config_str())

    # setup pipeline
    ds_train, ds_val, ds_test, ds_info = load()

    # model
    model = vgg_like(input_shape=ds_info.features["image"].shape, n_classes=ds_info.features["label"].num_classes)

    trainer = Trainer(model, ds_train, ds_val, ds_info, run_paths)
    for val_accuracy in trainer.train():
        tune.report(val_accuracy=val_accuracy)
示例#15
0
def addPerson():
    conn = sqlite3.connect('database.db')
    if not os.path.exists('./dataset'):
        os.makedirs('./dataset')

    c = conn.cursor()
    uname = e1.get()  #Get value from name entry
    c.execute('INSERT INTO users (name) VALUES (?)', (uname, ))
    uid = c.lastrowid
    sampleNum = 0

    while True:
        img = getFrame()
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        face_cascade = cv2.CascadeClassifier(
            'haarcascade_frontalface_default.xml')
        faces = face_cascade.detectMultiScale(gray, 1.3, 5)
        for (x, y, w, h) in faces:
            sampleNum = sampleNum + 1
            cv2.imwrite(
                'dataset/User.' + str(uid) + '.' + str(sampleNum) + '.jpg',
                gray[y:y + h, x:x + w])
        if sampleNum > 20:
            break

    conn.commit()
    conn.close()
    write('%s added' % (e1.get()))

    Trainer()
示例#16
0
def build_trainer(cfg, experiment_name, tensorboard_in_subdir=True):
    global is_first_trainer
    cfg = deepcopy(cfg)
    name = datetime.now().strftime("%Y-%m-%d_%H-%M-%S") + cfg["general"]["tag"]
    run_id = experiment_name + "_" + datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
    base_log_dir = cfg['training']['log_path']
    log_dir = f"{base_log_dir}/{experiment_name}/"
    os.makedirs(log_dir, exist_ok=True)

    cfg["name"] = name
    cfg["training"]["log_path"] = log_dir
    cfg['training']['disable_depth_estimator'] = not is_first_trainer or cfg['training'].get('disable_depth_estimator', False)

    if tensorboard_in_subdir:
        writer = SummaryWriter(log_dir=log_dir, filename_suffix=f'{experiment_name}.metrics')
        img_writer = SummaryWriter(log_dir=log_dir, filename_suffix=f'{experiment_name}.tensorboardimgs')
    else:
        writer = SummaryWriter(log_dir=base_log_dir, filename_suffix=f'{experiment_name}.metrics')
        img_writer = SummaryWriter(log_dir=base_log_dir, filename_suffix=f'{experiment_name}.tensorboardimgs')
    logger = get_logger(log_dir)
    with open(log_dir + "/cfg.yml", 'w') as fp:
        yaml.dump(cfg, fp)

    is_first_trainer = False

    return Trainer(cfg, writer, img_writer, logger, os.path.join(name, str(run_id)))
示例#17
0
def base_hyperparameter_order_picking(dataset, key, values):
    for train_filepath, val_filepath in getattr(
            config, f"{dataset}_TRAIN_VAL_SET_FILEPATHS"):
        subject = subject_re.findall(val_filepath)[0]
        for model in ["Simple_CNN", "CNN_IMU"]:
            results = []
            name = f"{dataset}-{subject}-{model}-{key}"
            for value in values:
                config_dict = getattr(config, dataset).copy()
                config_dict["TRAIN_SET_FILEPATH"] = train_filepath
                config_dict["VAL_SET_FILEPATH"] = val_filepath
                config_dict["NAME"] = f"{name}-{value}"
                config_dict["MODEL"] = model
                config_dict[key] = value
                trainer = Trainer(config_dict)
                eval_dict = trainer.train()
                results.append(eval_dict)
                eval_dict_acc, eval_dict_wf1 = eval_dict
                print(
                    "ACC: ", eval_dict_acc["best_val"],
                    f"epoch: {eval_dict_acc['best_epoch']}, iteration: {eval_dict_acc['best_iteration']}\n"
                )
                print(
                    "WF1: ", eval_dict_wf1["best_val"],
                    f"epoch: {eval_dict_wf1['best_epoch']}, iteration: {eval_dict_wf1['best_iteration']}\n"
                )
            save_best_result(results)
示例#18
0
def simple_cnn_layer_num(source_dataset, target_dataset):
    for train_filepath, val_filepath in getattr(
            config, f"{target_dataset}_TRAIN_VAL_SET_FILEPATHS"):
        subject = subject_re.findall(val_filepath)[0]
        results = []
        for layer_num in range(1, 4):
            name = f"{source_dataset}-{target_dataset}-Simple_CNN-{subject}-LAYER_NUM"
            config_dict = getattr(config, target_dataset).copy()
            config_dict["NAME"] = f"{name}-{layer_num}"
            config_dict["MODEL"] = "Simple_CNN"
            config_dict["TRAIN_SET_FILEPATH"] = train_filepath
            config_dict["VAL_SET_FILEPATH"] = val_filepath
            config_dict["LEARNING_RATE"] = config_dict[
                "Simple_CNN_LEARNING_RATE"]
            config_dict["LAYER_NUM"] = layer_num
            state_dict, freeze_idx = base_transfer(source_dataset,
                                                   target_dataset,
                                                   "Simple_CNN",
                                                   layer_num=layer_num)
            print(f"-----{config_dict['NAME']}-----")
            trainer = Trainer(config_dict, state_dict, freeze_idx)
            eval_dict = trainer.train()
            results.append(eval_dict)
            eval_dict_acc, eval_dict_wf1 = eval_dict
            print(
                "ACC: ", eval_dict_acc["best_val"],
                f"epoch: {eval_dict_acc['best_epoch']}, iteration: {eval_dict_acc['best_iteration']}\n"
            )
            print(
                "WF1: ", eval_dict_wf1["best_val"],
                f"epoch: {eval_dict_wf1['best_epoch']}, iteration: {eval_dict_wf1['best_iteration']}\n"
            )
        save_best_result(results)
def _run(FLAGS, model_cls):
    logger = logging.getLogger('Trainer_%s' % model_cls.__name__)
    logger.setLevel(logging.INFO)
    file_handler = logging.FileHandler('%s.log' % model_cls.__name__)
    file_handler.setLevel(logging.INFO)
    stream_handler = logging.StreamHandler()
    stream_handler.setLevel(logging.INFO)
    formatter = logging.Formatter('[%(asctime)s] ## %(message)s')
    file_handler.setFormatter(formatter)
    stream_handler.setFormatter(formatter)
    logger.addHandler(file_handler)
    logger.addHandler(stream_handler)

    hparams = tf.contrib.training.HParams(**COMMON_HPARAMS.values())
    hparams.set_hparam('batch_size', FLAGS.bs)
    hparams.set_hparam('n_steps', FLAGS.stp)
    hparams.set_hparam('n_dims', FLAGS.dims)
    hparams.set_hparam('n_info_dims', FLAGS.info_dims)
    hparams.set_hparam('n_att_dims', FLAGS.att_dims)
    hparams.set_hparam('max_epochs', FLAGS.epochs)
    hparams.set_hparam('checkpoint', FLAGS.ckpt)
    hparams.set_hparam('n_heads', FLAGS.heads)
    hparams.set_hparam('n_selfatt_dims', FLAGS.selfatt_dims)

    assert hparams.n_dims == hparams.n_info_dims + hparams.n_att_dims, "`n_dims` should be equal to the sum of `n_info_dims` and `n_att_dims`"
    assert hparams.n_dims == hparams.n_heads * hparams.n_selfatt_dims, "`n_dims` should be equal to the product of `n_heads` and `n_selfatt_dims`"

    name_size = 'SZ%d-STP%d' % (FLAGS.sz, FLAGS.stp)
    config_size = Config(size=FLAGS.sz, max_steps=FLAGS.stp)

    for name_std, config_std in CONFIG_STDS.iteritems():
        for name_drop, config_drop in CONFIG_DROPS.iteritems():
            for name_direction, config_direction in CONFIG_DIRECTIONS.iteritems(
            ):
                config = Config()
                config.add('base', 'base', CONFIG_BASE)
                config.add('size', name_size, config_size)
                config.add('direction', name_direction, config_direction)
                config.add('drop', name_drop, config_drop)
                config.add('std', name_std, config_std)
                gridworld = GridWorld(name=config.get_name(),
                                      **config.get_kwargs())

                for seed in GRIDWORLD_SEEDS:
                    data_dir = '%s-SEED%d' % (config.get_name(), seed)
                    gridworld.load(data_dir,
                                   seed=seed,
                                   splitting_seed=SPLITTING_SEED)

                    dataset_name = config.get_name()
                    for shuffling_seed in SHUFFLING_SEEDS:
                        dataset = Dataset(dataset_name,
                                          os.path.join(BASE_DIR, data_dir),
                                          shuffling_seed=shuffling_seed)
                        model = model_cls(dataset,
                                          hparams,
                                          gridworld,
                                          seed=MODEL_SEED)
                        Trainer(model, logger)()
示例#20
0
def main():

    from model.voxel2mesh import Voxel2Mesh as network
    exp_id = 2

    # Initialize
    cfg = load_config(exp_id)
    trial_path, trial_id = init(cfg)

    print('Experiment ID: {}, Trial ID: {}'.format(cfg.experiment_idx,
                                                   trial_id))

    print("Create network")
    classifier = network(cfg)
    classifier.cuda()

    wandb.init(name='Experiment_{}/trial_{}'.format(cfg.experiment_idx,
                                                    trial_id),
               project="vm-net",
               dir='/cvlabdata1/cvlab/datasets_udaranga/experiments/wanb')

    print("Initialize optimizer")
    optimizer = optim.Adam(filter(lambda p: p.requires_grad,
                                  classifier.parameters()),
                           lr=cfg.learning_rate)

    print("Load data")
    data_obj = Chaos()

    # During the first run use load_data function. It will do the necessary preprocessing and save the files to disk.
    # data = data_obj.pre_process_dataset(cfg, trial_id)
    data = data_obj.quick_load_data(cfg, trial_id)

    loader = DataLoader(data[DataModes.TRAINING],
                        batch_size=classifier.config.batch_size,
                        shuffle=True)

    print("Trainset length: {}".format(loader.__len__()))

    print("Initialize evaluator")
    evaluator = Evaluator(classifier, optimizer, data, trial_path, cfg,
                          data_obj)

    print("Initialize trainer")
    trainer = Trainer(classifier, loader, optimizer, cfg.numb_of_itrs,
                      cfg.eval_every, trial_path, evaluator)

    if cfg.trial_id is not None:
        print("Loading pretrained network")
        save_path = trial_path + '/best_performance/model.pth'
        checkpoint = torch.load(save_path)
        classifier.load_state_dict(checkpoint['model_state_dict'])
        optimizer.load_state_dict(checkpoint['optimizer_state_dict'])
        epoch = checkpoint['epoch']
    else:
        epoch = 0

    trainer.train(start_iteration=epoch)
示例#21
0
 def __init__(self, name="seq256_batch16_epoch30_gpu_lr2e_5_train"):
     logging.info("Loading the weights of the model..")
     trainer = Trainer()
     self.device = trainer.device
     self.tokenizer = trainer.train_data.tokenizer
     self.id_product2class = trainer.train_data.id_product2class
     self.max_seq_len = trainer.max_seq_len
     self.model = trainer.model
     self.name = name
示例#22
0
文件: main.py 项目: armaank/textDMM
def main(args):
    """main
    calls Trainer to train and validate a character-level language model

    inputs are the passed in cli args
    """

    dmm = Trainer(args)
    dmm.train()
示例#23
0
def main(args):

    assert args.alg in ['sourceonly', 'dann', 'wasserstein', 'NW']

    trainer = Trainer(args)
    trainer.train()

    print('Final accuracy')
    trainer.test()
示例#24
0
def run(batch_size, loss, optimizer, base_lr, n_epochs, schedule, dataset, model):

    # load the dataset
    dataset_train_meta, dataset_test_meta = load_dataset(dataset)

    exporter = Exporter(depth=-1, module_filter=[torch.nn.Conv2d, torch.nn.Linear],)
    # instantiate model
    from ikkuna.models import get_model
    model = get_model(model, dataset_train_meta.shape[1:],
                      num_classes=dataset_train_meta.num_classes, exporter=exporter)

    loss_fn = getattr(torch.nn, loss)()

    # set up the trainer
    trainer = Trainer(dataset_train_meta, batch_size=batch_size, loss=loss_fn, exporter=exporter)
    trainer.set_model(model)
    trainer.optimize(name=optimizer, lr=base_lr)
    trainer.add_subscriber(RatioSubscriber(['weight_updates', 'weights']))
    trainer.add_subscriber(NormSubscriber('layer_gradients'))
    trainer.add_subscriber(NormSubscriber('weight_gradients'))
    trainer.add_subscriber(VarianceSubscriber('weight_updates'))
    trainer.add_subscriber(VarianceSubscriber('layer_gradients'))
    trainer.add_subscriber(VarianceSubscriber('weight_gradients'))
    trainer.add_subscriber(TrainAccuracySubscriber())
    trainer.add_subscriber(TestAccuracySubscriber(dataset_test_meta, trainer.model.forward,
                                                  frequency=trainer.batches_per_epoch,
                                                  batch_size=batch_size))
    trainer.add_subscriber(MessageMeanSubscriber('weight_updates_weights_ratio'))

    logged_metrics = ['weight_updates_weights_ratio',
                      'loss',
                      'test_accuracy',
                      'train_accuracy',
                      'layer_gradients_norm2',
                      'weight_gradients_norm2',
                      'weight_gradients_variance',
                      'layer_gradients_variance',
                      'weight_gradients_variance']

    if schedule == 'ratio_adaptive_schedule_fn':
        from experiments.subscribers import RatioLRSubscriber
        lr_sub = RatioLRSubscriber(base_lr)
        trainer.add_subscriber(lr_sub)
        trainer.set_schedule(torch.optim.lr_scheduler.LambdaLR, lr_sub)
        logged_metrics.append('learning_rate')

    trainer.add_subscriber(SacredLoggingSubscriber(ex, logged_metrics))

    # do n epochs of training
    batches_per_epoch = trainer.batches_per_epoch
    epochs            = n_epochs
    for i in range(epochs):
        for b in range(batches_per_epoch):
            trainer.train_batch()

    # we return a result so we can use it for filtering aborted experiments in mongodb
    return 0
示例#25
0
def main(args):
    if os.path.exists(args.model_dir) and len(os.listdir(args.model_dir)) > 0:
        print("The model output path '%s' already exists and is not empty." %
              args.model_dir)
        return

    init_logger(args)
    set_seed(args)
    tokenizer = load_tokenizer(args.model_name_or_path)
    logger.info("******* Running with the following arguments *********")
    for a in vars(args):
        logger.info(a + " = " + str(getattr(args, a)))
    logger.info("***********************************************")
    train_dataset, train_examples = load_and_cache_examples(args,
                                                            tokenizer,
                                                            mode="train")
    train_examples = dict([(example.guid, example)
                           for example in train_examples])
    dev_dataset, dev_examples = load_and_cache_examples(args,
                                                        tokenizer,
                                                        mode="dev")
    dev_examples = dict([(example.guid, example) for example in dev_examples])
    test_dataset, test_examples = load_and_cache_examples(args,
                                                          tokenizer,
                                                          mode="test")
    test_examples = dict([(example.guid, example)
                          for example in test_examples])

    if args.align_languages:
        alignment_dataset = generate_alignment_pairs(args=args)
    else:
        alignment_dataset = None

    trainer = Trainer(args, train_dataset, dev_dataset, test_dataset,
                      train_examples, dev_examples, test_examples, tokenizer,
                      alignment_dataset)

    if args.do_train:
        trainer.load_model(final_eval=False)
        logger.info(trainer.model)
        trainer.train()
        if args.task == Tasks.PAWS_X.value:
            trainer.evaluate_pair("dev", exp_name=args.model_dir)
        else:
            trainer.evaluate_xnlu("dev", exp_name=args.model_dir)
        if args.save_model:
            trainer.save_model()

    if args.do_eval:
        if not args.do_train:
            trainer.load_model(final_eval=True)
        if args.task == Tasks.PAWS_X.value:
            trainer.evaluate_pair("dev", exp_name=args.model_dir)
            trainer.evaluate_pair("test", exp_name=args.model_dir)
        else:
            trainer.evaluate_xnlu("dev", exp_name=args.model_dir)
            trainer.evaluate_xnlu("test", exp_name=args.model_dir)
示例#26
0
def main():
    dataCor = Corpus(config.conv_path, config.wiki_path, config.save_dir)
    dataCor.load()

    trainData = dataCor.create_batches(config.batch_size, 'train')
    validData = dataCor.create_batches(config.batch_size, 'valid')
    testData = dataCor.create_batches(config.batch_size, 'test')

    model = Copy_seq2seq(vocab_size=dataCor.vocab.num_words,
                         embedding_size=config.embedding_size,
                         hidden_size=config.hidden_size,
                         encoder_num_layers=config.encoder_num_layers,
                         decoder_num_layers=config.decoder_num_layers,
                         dropout=config.dropout)
    if config.use_cuda:
        model.cuda(config.device)

    # Optimizer definition
    optimizer = getattr(torch.optim, config.optimizer)(model.parameters(),
                                                       lr=config.lr)

    # Run training iterations
    print("Starting Training!")
    save_dir = os.path.join(config.save_dir, 'model')
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)

    generator = GreedySearchDecoder(model)

    print("Training starts ...")
    trainer = Trainer(model=model,
                      optimizer=optimizer,
                      trainData=trainData,
                      validData=validData,
                      vocab=dataCor.vocab,
                      generator=generator,
                      num_epochs=config.num_epochs,
                      save_dir=save_dir,
                      log_steps=config.log_steps,
                      valid_steps=config.valid_steps,
                      grad_clip=config.grad_clip)
    if config.ckpt is not None:
        trainer.load(file_prefix=config.ckpt)
    trainer.train()

    result_file = os.path.join(config.save_dir, 'greedy.txt')
    evaluate_generation(generator=generator,
                        data_iter=testData,
                        vocab=dataCor.vocab,
                        save_file=result_file)

    result_file = os.path.join(config.save_dir, 'beamSearch.txt')
    generator = BeamSearchDecoder(model)
    evaluate_generation(generator=generator,
                        data_iter=testData,
                        vocab=dataCor.vocab,
                        save_file=result_file)
示例#27
0
def run(args):
    print('----Setting up hyperparams----:')
    print(args)
    print('-------------------------------')
    trainer = Trainer(args)
    if args.mode == 'train':
        trainer.train()
    elif args.mode == 'test':
        trainer.test()
示例#28
0
def run(batch_size, loss, optimizer, base_lr, n_epochs, dataset, model, freeze_at):
    # load the dataset
    transforms = [ToTensor()]
    dataset_train_meta, dataset_test_meta = load_dataset(dataset, train_transforms=transforms,
                                                         test_transforms=transforms)
    exporter = Exporter(depth=-1, module_filter=[torch.nn.Conv2d, torch.nn.Linear],)
    # instantiate model
    model = get_model(model, dataset_train_meta.shape[1:],
                      num_classes=dataset_train_meta.num_classes, exporter=exporter)

    loss_fn = getattr(torch.nn, loss)()

    backend = None
    # set up the trainer
    trainer = Trainer(dataset_train_meta, batch_size=batch_size, loss=loss_fn,
                      exporter=exporter)
    trainer.set_model(model)
    trainer.optimize(name=optimizer, lr=base_lr)
    svcca = SVCCASubscriber(dataset_test_meta, 500,
                            trainer.model.forward, freeze_at=freeze_at,
                            subsample=trainer.batches_per_epoch, backend=backend)
    trainer.add_subscriber(svcca)
    trainer.add_subscriber(RatioSubscriber(['weight_updates', 'weights'], backend=backend))
    trainer.add_subscriber(NormSubscriber('weight_gradients', backend=backend))
    trainer.add_subscriber(TrainAccuracySubscriber(backend=backend))
    trainer.add_subscriber(TestAccuracySubscriber(dataset_test_meta, trainer.model.forward,
                                                  frequency=trainer.batches_per_epoch,
                                                  batch_size=batch_size, backend=backend))

    logged_metrics = ['test_accuracy',
                      'train_accuracy',
                      'weight_gradients_norm2',
                      'weight_updates_weights_ratio',
                      'self_similarity',
                      ]

    trainer.add_subscriber(SacredLoggingSubscriber(ex, logged_metrics))

    if freeze_at == 'percentage':
        modules   = exporter.modules
        n_modules = len(modules)
        step      = n_epochs // n_modules

    # do n epochs of training
    batches_per_epoch = trainer.batches_per_epoch
    for i in range(n_epochs):
        for b in range(batches_per_epoch):
            trainer.train_batch()

        if freeze_at == 'percentage':
            freeze_idx = i // step - 1
            if freeze_idx >= 0:
                svcca._freeze_module(modules[freeze_idx])

    # we return a result so we can use it for filtering aborted experiments in mongodb
    return 0
示例#29
0
def main():
    generator = make_generator()
    discriminator = make_discriminator()

    args = parser_with_default_args().parse_args()
    dataset = MNISTDataset(args.batch_size)
    gan = LSGAN(generator, discriminator, **vars(args))
    trainer = Trainer(dataset, gan, **vars(args))

    trainer.train()
示例#30
0
def main(config):
    trainer = Trainer(config)
    if config['train']:
        trainer.train()
    else:
        if config.pretrained_path is None:
            raise Exception(
                "[!] You should specify `pretrained_path` to load a pretrained model"
            )
        trainer.test()