Esempio n. 1
0
 def __init__(self):
     self = self
     self.best_step = 1000
     self.activations = {
         'sigmoid': nn.Sigmoid(),
         'relu': nn.ReLU(),
         'rrelu0103': nn.RReLU(0.1, 0.3),
         'elu': nn.ELU(),
         'selu': nn.SELU(),
         'leakyrelu01': nn.LeakyReLU(0.1)
     }
     self.learning_rate = 0.003
     self.momentum = 0.8
     self.layers_number = 5
     self.hidden_size = 50
     self.activation_hidden = 'relu'
     self.activation_output = 'sigmoid'
     self.do_batch_norm = True
     self.sols = {}
     self.solsSum = {}
     self.random = 0
     #self.do_batch_norm_grid = [False, True]
     self.random_grid = [_ for _ in range(10)]
     #self.layers_number_grid = [3, 4, 5, 6, 7, 8, 9, 10]
     #self.hidden_size_grid = [10, 20, 30, 40, 50]
     self.momentum_grid = [0.0, 0.3, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
     #self.learning_rate_grid = [0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009, 0.01]
     #self.activation_hidden_grid = self.activations.keys()
     #self.activation_output_grid = self.activations.keys()
     self.grid_search = GridSearch(self)
     self.grid_search.set_enabled(False)
 def __init__(self):
     self.value_fun = np.load(os.path.join(os.path.dirname(__file__), "mdp_value_without_5.npy"))
     self.gamma = 0.95  # 每份时间的折现率
     self.alpha1 = 0.5  # value_fun权重
     self.BASETIME = 946670400  # 2020.1.1 04:00:00
     self.dispatch_frequency_gap = 300  # 以5分钟为时间间隔
     self.grid_search = GridSearch()
    def __init__(self):
        self.best_step = sys.maxsize
        self.sols = {}
        self.solsSum = {}
        self.hidden_size = 50
        self.lr = 0.01
        self.activation_hidden = 'relu6'
        self.activation_output = 'sigmoid'
        self.activations = {
            'sigmoid': nn.Sigmoid(),
            'relu': nn.ReLU(),
            'relu6': nn.ReLU6(),
            'rrelu0103': nn.RReLU(0.1, 0.3),
            'rrelu0205': nn.RReLU(0.2, 0.5),
            'htang1': nn.Hardtanh(-1, 1),
            'htang2': nn.Hardtanh(-2, 2),
            'htang3': nn.Hardtanh(-3, 3),
            'tanh': nn.Tanh(),
            'elu': nn.ELU(),
            'selu': nn.SELU(),
            'hardshrink': nn.Hardshrink(),
            'leakyrelu01': nn.LeakyReLU(0.1),
            'leakyrelu001': nn.LeakyReLU(0.01),
            'logsigmoid': nn.LogSigmoid(),
            'prelu': nn.PReLU(),
        }
        self.hidden_size_grid = [16, 20, 26, 32, 36, 40, 45, 50, 54]
        self.lr_grid = [0.0001, 0.001, 0.005, 0.01, 0.1, 1]

        # self.lr_grid = [0.1, .5, 1, 1.5, 2, 3, 5, 10]

        # self.activation_hidden_grid = list(self.activations.keys())
        # self.activation_output_grid = list(self.activations.keys())
        self.grid_search = GridSearch(self)
        self.grid_search.set_enabled(False)
Esempio n. 4
0
 def __init__(self):
     # best so far - lr 1.5, hs 15, layers 3
     self = self
     self.layers_number = 3
     self.lr = 1.5
     self.hidden_size = 15
     self.momentum = 0.8
     self.activation_hidden = 'relu6'
     self.activation_output = 'sigmoid'
     self.do_batch_norm = True
     self.lr_grid = [1.25,1.27, 1.29, 1.3,1.31, 1.32, 1.34]
     self.hidden_size_grid = [12,13,14,15,16,17]
     #self.momentum_grid = [0.0, 0.3, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
     self.activations = {
         'sigmoid': nn.Sigmoid(),
         'relu': nn.ReLU(),
         'relu6': nn.ReLU6(),
         'rrelu0103': nn.RReLU(0.1, 0.3),
         'elu': nn.ELU(),
         'selu': nn.SELU(),
         'leakyrelu01': nn.LeakyReLU(0.1)
         }
     #self.do_batch_norm_grid = [False, True]
     #self.activation_hidden_grid = self.activations.keys()
     #self.activation_output_grid = self.activations.keys()
     self.grid_search = GridSearch(self).set_enabled(DoGridSearch)
Esempio n. 5
0
 def __init__(self):
     self.lr = 0.08
     #self.lr_grid = [0.6,0.65,0.7,0.75,1.0,2.0, 5, 10]
     self.lr_grid = [0.05, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14]
     self.hidden_size = 39
     #self.hidden_size_grid = [40,50,55,58,60,61,62,63,64,65]
     self.hidden_size_grid = [28, 32, 34, 35, 36, 37, 38, 39, 45, 50]
     self.grid_search = GridSearch(self).set_enabled(False)
Esempio n. 6
0
def grid_search_xgboost(param, tuning_param, X_train, X_test, y_train, y_test):
    xgb_model = xgb.XGBRegressor()
    xgb_model.set_params(**param)

    gs = GridSearch(xgb_model, tuning_param, verbose=1)
    gs.fit(X_train, X_test, y_train, y_test)

    return gs
Esempio n. 7
0
    def __init__(self,ncfile,xpt=None,ypt=None,Npt=100,klayer=[-99],**kwargs):
        
        self.Npt=Npt

        Spatial.__init__(self,ncfile,klayer=klayer,**kwargs)

        # Load the grid as a hybridgrid
        self.grd = GridSearch(self.xp,self.yp,self.cells,nfaces=self.nfaces,\
            edges=self.edges,mark=self.mark,grad=self.grad,neigh=self.neigh,\
                xv=self.xv,yv=self.yv)

        # Find the edge indices along the line
        self.update_xy(xpt,ypt)
Esempio n. 8
0
 def __init__(self):
     # best so far - lr 5(1), hs 32(25), layers 3 5/32
     self = self
     self.lr = 5
     self.hidden_size = 64
     self.momentum = 0.5
     self.init_type = 'uniform'
     self.do_batch_init = False
     self.do_batch_norm = True
     self.batch_size = 256
     self.lr_grid = [0.01, 1, 5, 10, 12]
     self.hidden_size_grid = [50, 64, 72, 100, 128]
     #self.momentum_grid = [0.0, 0.3, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
     self.grid_search = GridSearch(self).set_enabled(DoGridSearch)
Esempio n. 9
0
    def __init__(self):
        self.learning_rate = 0.2
        self.momentum = 0.8
        self.signal_count = 3
        self.batch_size = 128
        self.init_type = 'uniform'
        self.rand_function_hidden_size = 28
        self.rand_function_layers_count = 5
        self.compare_hidden_size = 28
        self.compare_layers_count = 1
        self.clip_grad_limit = 100.0
        self.rand_seed = 1
        self.rand_seed_grid = [i for i in range(10)]

        self.grid_search = GridSearch(self).set_enabled(False)
        Debug.set_enabled(False)
Esempio n. 10
0
 def __init__(self):
     self.best_step = 1000
     self.activations = {
         'sigmoid': nn.Sigmoid(),
         'custom': self.custom,
         'relu': nn.ReLU(),
         'relu6': nn.ReLU6(),
         'rrelu0103': nn.RReLU(0.1, 0.3),
         'rrelu0205': nn.RReLU(0.2, 0.5),
         'htang1': nn.Hardtanh(-1, 1),
         'htang2': nn.Hardtanh(-2, 2),
         'htang3': nn.Hardtanh(-3, 3),
         'tanh': nn.Tanh(),
         'elu': nn.ELU(),
         'selu': nn.SELU(),
         'hardshrink': nn.Hardshrink(),
         'leakyrelu01': nn.LeakyReLU(0.1),
         'leakyrelu001': nn.LeakyReLU(0.01),
         'logsigmoid': nn.LogSigmoid(),
         'prelu': nn.PReLU(),
     }
     self.learning_rate = 1.0
     self.hidden_size = 11
     self.activation_hidden = 'relu'
     self.activation_output = 'sigmoid'
     self.sols = {}
     self.solsSum = {}
     self.random = 0
     self.random_grid = [_ for _ in range(10)]
     self.hidden_size_grid = [3, 5, 7, 11]
     self.learning_rate_grid = [0.001, 0.01, 0.1, 1.0, 10.0, 100.0]
     #self.learning_rate_grid = [1.0 + i/100.0 for i in range(10)]
     self.activation_hidden_grid = self.activations.keys()
     #self.activation_output_grid = self.activations.keys()
     self.grid_search = GridSearch(self)
     self.grid_search.set_enabled(True)
Esempio n. 11
0
def main(argv=None):
    tstart = time.time()
    # Arguments
    parser = argparse.ArgumentParser(
        description=
        'FACIL - Framework for Analysis of Class Incremental Learning')

    # miscellaneous args
    parser.add_argument('--gpu',
                        type=int,
                        default=0,
                        help='GPU (default=%(default)s)')
    parser.add_argument('--results-path',
                        type=str,
                        default='../results',
                        help='Results path (default=%(default)s)')
    parser.add_argument('--exp-name',
                        default=None,
                        type=str,
                        help='Experiment name (default=%(default)s)')
    parser.add_argument('--seed',
                        type=int,
                        default=0,
                        help='Random seed (default=%(default)s)')
    parser.add_argument(
        '--log',
        default=['disk'],
        type=str,
        choices=['disk', 'tensorboard'],
        help='Loggers used (disk, tensorboard) (default=%(default)s)',
        nargs='*',
        metavar="LOGGER")
    parser.add_argument('--save-models',
                        action='store_true',
                        help='Save trained models (default=%(default)s)')
    parser.add_argument('--last-layer-analysis',
                        action='store_true',
                        help='Plot last layer analysis (default=%(default)s)')
    parser.add_argument(
        '--no-cudnn-deterministic',
        action='store_true',
        help='Disable CUDNN deterministic (default=%(default)s)')
    # dataset args
    parser.add_argument('--datasets',
                        default=['cifar100'],
                        type=str,
                        choices=list(dataset_config.keys()),
                        help='Dataset or datasets used (default=%(default)s)',
                        nargs='+',
                        metavar="DATASET")
    parser.add_argument(
        '--num-workers',
        default=4,
        type=int,
        required=False,
        help=
        'Number of subprocesses to use for dataloader (default=%(default)s)')
    parser.add_argument(
        '--pin-memory',
        default=False,
        type=bool,
        required=False,
        help=
        'Copy Tensors into CUDA pinned memory before returning them (default=%(default)s)'
    )
    parser.add_argument(
        '--batch-size',
        default=64,
        type=int,
        required=False,
        help='Number of samples per batch to load (default=%(default)s)')
    parser.add_argument(
        '--num-tasks',
        default=4,
        type=int,
        required=False,
        help='Number of tasks per dataset (default=%(default)s)')
    parser.add_argument(
        '--nc-first-task',
        default=None,
        type=int,
        required=False,
        help='Number of classes of the first task (default=%(default)s)')
    parser.add_argument(
        '--use-valid-only',
        action='store_true',
        help='Use validation split instead of test (default=%(default)s)')
    parser.add_argument(
        '--stop-at-task',
        default=0,
        type=int,
        required=False,
        help='Stop training after specified task (default=%(default)s)')
    # model args
    parser.add_argument('--network',
                        default='resnet32',
                        type=str,
                        choices=allmodels,
                        help='Network architecture used (default=%(default)s)',
                        metavar="NETWORK")
    parser.add_argument(
        '--keep-existing-head',
        action='store_true',
        help='Disable removing classifier last layer (default=%(default)s)')
    parser.add_argument('--pretrained',
                        action='store_true',
                        help='Use pretrained backbone (default=%(default)s)')
    # training args
    parser.add_argument('--approach',
                        default='finetuning',
                        type=str,
                        choices=approach.__all__,
                        help='Learning approach used (default=%(default)s)',
                        metavar="APPROACH")
    parser.add_argument(
        '--nepochs',
        default=200,
        type=int,
        required=False,
        help='Number of epochs per training session (default=%(default)s)')
    parser.add_argument('--lr',
                        default=0.1,
                        type=float,
                        required=False,
                        help='Starting learning rate (default=%(default)s)')
    parser.add_argument('--lr-min',
                        default=1e-4,
                        type=float,
                        required=False,
                        help='Minimum learning rate (default=%(default)s)')
    parser.add_argument(
        '--lr-factor',
        default=3,
        type=float,
        required=False,
        help='Learning rate decreasing factor (default=%(default)s)')
    parser.add_argument(
        '--lr-patience',
        default=5,
        type=int,
        required=False,
        help=
        'Maximum patience to wait before decreasing learning rate (default=%(default)s)'
    )
    parser.add_argument('--clipping',
                        default=10000,
                        type=float,
                        required=False,
                        help='Clip gradient norm (default=%(default)s)')
    parser.add_argument('--momentum',
                        default=0.0,
                        type=float,
                        required=False,
                        help='Momentum factor (default=%(default)s)')
    parser.add_argument('--weight-decay',
                        default=0.0,
                        type=float,
                        required=False,
                        help='Weight decay (L2 penalty) (default=%(default)s)')
    parser.add_argument('--warmup-nepochs',
                        default=0,
                        type=int,
                        required=False,
                        help='Number of warm-up epochs (default=%(default)s)')
    parser.add_argument(
        '--warmup-lr-factor',
        default=1.0,
        type=float,
        required=False,
        help='Warm-up learning rate factor (default=%(default)s)')
    parser.add_argument(
        '--multi-softmax',
        action='store_true',
        help='Apply separate softmax for each task (default=%(default)s)')
    parser.add_argument(
        '--fix-bn',
        action='store_true',
        help='Fix batch normalization after first task (default=%(default)s)')
    parser.add_argument(
        '--eval-on-train',
        action='store_true',
        help='Show train loss and accuracy (default=%(default)s)')
    # gridsearch args
    parser.add_argument(
        '--gridsearch-tasks',
        default=-1,
        type=int,
        help=
        'Number of tasks to apply GridSearch (-1: all tasks) (default=%(default)s)'
    )

    # Args -- Incremental Learning Framework
    args, extra_args = parser.parse_known_args(argv)
    args.results_path = os.path.expanduser(args.results_path)
    base_kwargs = dict(nepochs=args.nepochs,
                       lr=args.lr,
                       lr_min=args.lr_min,
                       lr_factor=args.lr_factor,
                       lr_patience=args.lr_patience,
                       clipgrad=args.clipping,
                       momentum=args.momentum,
                       wd=args.weight_decay,
                       multi_softmax=args.multi_softmax,
                       wu_nepochs=args.warmup_nepochs,
                       wu_lr_factor=args.warmup_lr_factor,
                       fix_bn=args.fix_bn,
                       eval_on_train=args.eval_on_train)

    if args.no_cudnn_deterministic:
        print('WARNING: CUDNN Deterministic will be disabled.')
        utils.cudnn_deterministic = False

    utils.seed_everything(seed=args.seed)
    print('=' * 108)
    print('Arguments =')
    for arg in np.sort(list(vars(args).keys())):
        print('\t' + arg + ':', getattr(args, arg))
    print('=' * 108)

    # Args -- CUDA
    if torch.cuda.is_available():
        torch.cuda.set_device(args.gpu)
        device = 'cuda'
    else:
        print('WARNING: [CUDA unavailable] Using CPU instead!')
        device = 'cpu'
    # Multiple gpus
    # if torch.cuda.device_count() > 1:
    #     self.C = torch.nn.DataParallel(C)
    #     self.C.to(self.device)
    ####################################################################################################################

    # Args -- Network
    from networks.network import LLL_Net
    if args.network in tvmodels:  # torchvision models
        tvnet = getattr(importlib.import_module(name='torchvision.models'),
                        args.network)
        if args.network == 'googlenet':
            init_model = tvnet(pretrained=args.pretrained, aux_logits=False)
        else:
            init_model = tvnet(pretrained=args.pretrained)
        set_tvmodel_head_var(init_model)
    else:  # other models declared in networks package's init
        net = getattr(importlib.import_module(name='networks'), args.network)
        # WARNING: fixed to pretrained False for other model (non-torchvision)
        init_model = net(pretrained=False)

    # Args -- Continual Learning Approach
    from approach.incremental_learning import Inc_Learning_Appr
    Appr = getattr(importlib.import_module(name='approach.' + args.approach),
                   'Appr')
    assert issubclass(Appr, Inc_Learning_Appr)
    appr_args, extra_args = Appr.extra_parser(extra_args)
    print('Approach arguments =')
    for arg in np.sort(list(vars(appr_args).keys())):
        print('\t' + arg + ':', getattr(appr_args, arg))
    print('=' * 108)

    # Args -- Exemplars Management
    from datasets.exemplars_dataset import ExemplarsDataset
    Appr_ExemplarsDataset = Appr.exemplars_dataset_class()
    if Appr_ExemplarsDataset:
        assert issubclass(Appr_ExemplarsDataset, ExemplarsDataset)
        appr_exemplars_dataset_args, extra_args = Appr_ExemplarsDataset.extra_parser(
            extra_args)
        print('Exemplars dataset arguments =')
        for arg in np.sort(list(vars(appr_exemplars_dataset_args).keys())):
            print('\t' + arg + ':', getattr(appr_exemplars_dataset_args, arg))
        print('=' * 108)
    else:
        appr_exemplars_dataset_args = argparse.Namespace()

    # Args -- GridSearch
    if args.gridsearch_tasks > 0:
        from gridsearch import GridSearch
        gs_args, extra_args = GridSearch.extra_parser(extra_args)
        Appr_finetuning = getattr(
            importlib.import_module(name='approach.finetuning'), 'Appr')
        assert issubclass(Appr_finetuning, Inc_Learning_Appr)
        GridSearch_ExemplarsDataset = Appr.exemplars_dataset_class()
        print('GridSearch arguments =')
        for arg in np.sort(list(vars(gs_args).keys())):
            print('\t' + arg + ':', getattr(gs_args, arg))
        print('=' * 108)

    assert len(extra_args) == 0, "Unused args: {}".format(' '.join(extra_args))
    ####################################################################################################################

    # Log all arguments
    full_exp_name = reduce(
        (lambda x, y: x[0] + y[0]),
        args.datasets) if len(args.datasets) > 0 else args.datasets[0]
    full_exp_name += '_' + args.approach
    if args.exp_name is not None:
        full_exp_name += '_' + args.exp_name
    logger = MultiLogger(args.results_path,
                         full_exp_name,
                         loggers=args.log,
                         save_models=args.save_models)
    logger.log_args(
        argparse.Namespace(**args.__dict__, **appr_args.__dict__,
                           **appr_exemplars_dataset_args.__dict__))

    # Loaders
    utils.seed_everything(seed=args.seed)
    trn_loader, val_loader, tst_loader, taskcla = get_loaders(
        args.datasets,
        args.num_tasks,
        args.nc_first_task,
        args.batch_size,
        num_workers=args.num_workers,
        pin_memory=args.pin_memory)
    # Apply arguments for loaders
    if args.use_valid_only:
        tst_loader = val_loader
    max_task = len(taskcla) if args.stop_at_task == 0 else args.stop_at_task

    # Network and Approach instances
    utils.seed_everything(seed=args.seed)
    net = LLL_Net(init_model, remove_existing_head=not args.keep_existing_head)
    utils.seed_everything(seed=args.seed)
    # taking transformations and class indices from first train dataset
    first_train_ds = trn_loader[0].dataset
    transform, class_indices = first_train_ds.transform, first_train_ds.class_indices
    appr_kwargs = {**base_kwargs, **dict(logger=logger, **appr_args.__dict__)}
    if Appr_ExemplarsDataset:
        appr_kwargs['exemplars_dataset'] = Appr_ExemplarsDataset(
            transform, class_indices, **appr_exemplars_dataset_args.__dict__)
    utils.seed_everything(seed=args.seed)
    appr = Appr(net, device, **appr_kwargs)

    # GridSearch
    if args.gridsearch_tasks > 0:
        ft_kwargs = {
            **base_kwargs,
            **dict(logger=logger,
                   exemplars_dataset=GridSearch_ExemplarsDataset(
                       transform, class_indices))
        }
        appr_ft = Appr_finetuning(net, device, **ft_kwargs)
        gridsearch = GridSearch(appr_ft, args.seed, gs_args.gridsearch_config,
                                gs_args.gridsearch_acc_drop_thr,
                                gs_args.gridsearch_hparam_decay,
                                gs_args.gridsearch_max_num_searches)

    # Loop tasks
    print(taskcla)
    acc_taw = np.zeros((max_task, max_task))
    acc_tag = np.zeros((max_task, max_task))
    forg_taw = np.zeros((max_task, max_task))
    forg_tag = np.zeros((max_task, max_task))
    for t, (_, ncla) in enumerate(taskcla):
        # Early stop tasks if flag
        if t >= max_task:
            continue

        print('*' * 108)
        print('Task {:2d}'.format(t))
        print('*' * 108)

        # Add head for current task
        net.add_head(taskcla[t][1])
        net.to(device)

        # GridSearch
        if t < args.gridsearch_tasks:

            # Search for best finetuning learning rate -- Maximal Plasticity Search
            print('LR GridSearch')
            best_ft_acc, best_ft_lr = gridsearch.search_lr(
                appr.model, t, trn_loader[t], val_loader[t])
            # Apply to approach
            appr.lr = best_ft_lr
            gen_params = gridsearch.gs_config.get_params('general')
            for k, v in gen_params.items():
                if not isinstance(v, list):
                    setattr(appr, k, v)

            # Search for best forgetting/intransigence tradeoff -- Stability Decay
            print('Trade-off GridSearch')
            best_tradeoff, tradeoff_name = gridsearch.search_tradeoff(
                args.approach, appr, t, trn_loader[t], val_loader[t],
                best_ft_acc)
            # Apply to approach
            if tradeoff_name is not None:
                setattr(appr, tradeoff_name, best_tradeoff)

            print('-' * 108)

        # Train
        appr.train(t, trn_loader[t], val_loader[t])
        print('-' * 108)

        # Test
        for u in range(t + 1):
            test_loss, acc_taw[t, u], acc_tag[t,
                                              u] = appr.eval(u, tst_loader[u])
            if u < t:
                forg_taw[t, u] = acc_taw[:t, u].max(0) - acc_taw[t, u]
                forg_tag[t, u] = acc_tag[:t, u].max(0) - acc_tag[t, u]
            print(
                '>>> Test on task {:2d} : loss={:.3f} | TAw acc={:5.1f}%, forg={:5.1f}%'
                '| TAg acc={:5.1f}%, forg={:5.1f}% <<<'.format(
                    u, test_loss, 100 * acc_taw[t, u], 100 * forg_taw[t, u],
                    100 * acc_tag[t, u], 100 * forg_tag[t, u]))
            logger.log_scalar(task=t,
                              iter=u,
                              name='loss',
                              group='test',
                              value=test_loss)
            logger.log_scalar(task=t,
                              iter=u,
                              name='acc_taw',
                              group='test',
                              value=100 * acc_taw[t, u])
            logger.log_scalar(task=t,
                              iter=u,
                              name='acc_tag',
                              group='test',
                              value=100 * acc_tag[t, u])
            logger.log_scalar(task=t,
                              iter=u,
                              name='forg_taw',
                              group='test',
                              value=100 * forg_taw[t, u])
            logger.log_scalar(task=t,
                              iter=u,
                              name='forg_tag',
                              group='test',
                              value=100 * forg_tag[t, u])

        # Save
        print('Save at ' + os.path.join(args.results_path, full_exp_name))
        logger.log_result(acc_taw, name="acc_taw", step=t)
        logger.log_result(acc_tag, name="acc_tag", step=t)
        logger.log_result(forg_taw, name="forg_taw", step=t)
        logger.log_result(forg_tag, name="forg_tag", step=t)
        logger.save_model(net.state_dict(), task=t)
        logger.log_result(acc_taw.sum(1) /
                          np.tril(np.ones(acc_taw.shape[0])).sum(1),
                          name="avg_accs_taw",
                          step=t)
        logger.log_result(acc_tag.sum(1) /
                          np.tril(np.ones(acc_tag.shape[0])).sum(1),
                          name="avg_accs_tag",
                          step=t)
        aux = np.tril(
            np.repeat([[tdata[1] for tdata in taskcla[:max_task]]],
                      max_task,
                      axis=0))
        logger.log_result((acc_taw * aux).sum(1) / aux.sum(1),
                          name="wavg_accs_taw",
                          step=t)
        logger.log_result((acc_tag * aux).sum(1) / aux.sum(1),
                          name="wavg_accs_tag",
                          step=t)

        # Last layer analysis
        if args.last_layer_analysis:
            weights, biases = last_layer_analysis(net.heads,
                                                  t,
                                                  taskcla,
                                                  y_lim=True)
            logger.log_figure(name='weights', iter=t, figure=weights)
            logger.log_figure(name='bias', iter=t, figure=biases)

            # Output sorted weights and biases
            weights, biases = last_layer_analysis(net.heads,
                                                  t,
                                                  taskcla,
                                                  y_lim=True,
                                                  sort_weights=True)
            logger.log_figure(name='weights', iter=t, figure=weights)
            logger.log_figure(name='bias', iter=t, figure=biases)
    # Print Summary
    utils.print_summary(acc_taw, acc_tag, forg_taw, forg_tag)
    print('[Elapsed time = {:.1f} h]'.format(
        (time.time() - tstart) / (60 * 60)))
    print('Done!')

    return acc_taw, acc_tag, forg_taw, forg_tag, logger.exp_path
parameters['hidden_nodes'] = [10,12,14,16,18,20,22,24]
parameters['learning_rate'] = [0.01, 0.04, 0.03, 0.02, 0.05, 0.005, 0.001]
parameters['dropout'] = [0,.1, .2, .3, .4, .5]
parameters['iters'] = [200,1000,2000,3000,4000,5000]


# In[132]:


parameters


# In[133]:


g = GridSearch(NeuralNetwork, MSE, train_features, train_targets, val_features, val_targets)
g.run(parameters)


# In[134]:


g.final_parameters


# In[136]:


import sys

### Set the hyperparameters here ###
Esempio n. 13
0
 def __init__(self):
     self.lr = 1.2
     self.lr_grid = [0.01, 0.1, 1.0, 10.0, 100.0]
     self.hidden_size = 16
     self.hidden_size_grid = [1, 2, 3, 5, 7, 9, 11, 13, 15, 17, 19]
     self.grid_search = GridSearch(self).set_enabled(False)
Esempio n. 14
0
def GridParticles(grdfile,dx,dy,nz,xypoly=None,splitvec=1):
    """
    Returns the locations of particles on a regular grid inside of suntans grid

    Inputs:
    	grdfile - netcdf filename containing the suntans grid
	dx,dy - resolution in x and y component respectively.
	nz - number of particles in the vertical. Particles are arranged in sigma layers.
	xypoly - [optional] coordinates of an additional bounding polygon [Nx2 array]
    """
    
    # Load the suntans grid
    sun = Grid(grdfile)

    # Load a trisearch object    
    tri = GridSearch(sun.xp,sun.yp,sun.cells,nfaces=sun.nfaces,verbose=False)
    
    if xypoly == None:
        xlims = [sun.xlims[0],sun.xlims[1]]
        ylims = [sun.ylims[0],sun.ylims[1]]
    else:
        xlims = [xypoly[:,0].min(),xypoly[:,0].max()]
        ylims = [xypoly[:,1].min(),xypoly[:,1].max()]

    # Construct a 2D mesh of particles
    x = np.arange(xlims[0],xlims[1],dx)
    y = np.arange(ylims[0],ylims[1],dy)
    
    X,Y = np.meshgrid(x,y)
    
    X=X.ravel()
    Y=Y.ravel()
    # Check which particles are inside the grid 
    cellind = tri(X,Y)
    mask = cellind!=-1

    # Check which particles are also inside of the polygon
    if not xypoly == None:
        inpoly = inpolygon(np.vstack((X,Y)).T,xypoly)
        mask = operator.and_(mask,inpoly)

    xout = X[mask]
    yout = Y[mask]
    
    nx = xout.shape[0]
    
    # Construct the 3D mesh
    xout = np.repeat(xout.reshape((nx,1)),nz,axis=1)
    yout = np.repeat(yout.reshape((nx,1)),nz,axis=1)
    
    zout = np.linspace(0.05,0.95,nz)
    zout = np.repeat(zout.reshape((nz,1)),nx,axis=1)
        
    zout *= -sun.dv[cellind[mask]]
    zout = zout.T
    
    xout = xout.ravel()
    yout = yout.ravel()
    zout = zout.ravel()

    # Rearrange the vectors to avoid clustering (this helps even the MPI workload)
    #xout_split=[]
    #yout_split=[]
    #zout_split=[]
    #for start in range(splitvec):
    #    xout_split.append(xout[start::splitvec])
    #    yout_split.append(yout[start::splitvec])
    #    zout_split.append(zout[start::splitvec])

    #xout = np.hstack(xout_split)
    #yout = np.hstack(yout_split)
    #zout = np.hstack(zout_split)
    

    return xout, yout, zout
Esempio n. 15
0
# -*- coding: utf-8 -*-
"""
Created on Mon Jul  1 15:53:46 2019

@author: rrameshbabu6
"""
from gridsearch import GridSearch
from prepare_data import scale_data
from prepare_sensor_data import load_data, scale_sensor_data
import pickle as p

# load dataset
roboBoat_gridsearch = GridSearch(n_epochs=[100],
                                 n_nodes=[100, 150, 250, 500, 750, 1000],
                                 n_hidden_layers=[1],
                                 n_input=[3],
                                 dropout=[1],
                                 time_series=True,
                                 n_batch=[100])

train_file = 'train.json'
test_file = 'test.json'

train_samples = load_data(train_file)
test_samples = load_data(test_file)

train_samples = train_samples[0:15000, :]
test_samples = test_samples[0:5000, :]

# transform the scale of the data
scaler, train_scaled, test_scaled = scale_sensor_data(train_samples,
Esempio n. 16
0
 def __init__(self):
     self.lr = 0.9
     self.lr_grid = [0.005, 0.01, 0.05, 0.1]
     self.hidden_size = 14
     self.hidden_size_grid = [2, 3, 4, 5, 6, 7]
     self.grid_search = GridSearch(self).set_enabled(False)