def s_rnn_models(self):
     gs = GridSeacher({
         'mdl_kwargs': {
             'C': mbls.SerialRNNClassifier,
             'rnn_cell_name': GDIter('GRU', 'LSTM'),
             'embd_dims': self.gd_embd_dims,
             'layers': self.gd_layers,
             'dropout': self.dropout_d,
         },
     })
     self.add_gs(gs)
 def s_attn_models_heads(self):
     gs = GridSeacher({
         'mdl_kwargs': {
             'C': mbls.SerialTimeSelfAttn,
             'embd_dims': self.gd_embd_dims,
             'layers': self.gd_layers,
             'dropout': self.dropout_d,
             'fourier_dims': GDIter(1),
             'te_features': GDIter(2),
             'kernel_size': GDIter(1),
             'heads': GDIter(8, 16),  # ***
             'time_noise_window': GDIter('0*24**-1'),
         },
     })
     self.add_gs(gs)
 def p_attn_model(self):
     gs = GridSeacher({
         'mdl_kwargs': {
             'C': mbls.ParallelTimeSelfAttn,
             'embd_dims': self.gd_embd_dims,
             'layers': self.gd_layers,
             'dropout': self.dropout_d,
             'fourier_dims': GDIter(1),
             'te_features': GDIter(16),
             'kernel_size': GDIter(1),
             'heads': GDIter(4),
             'time_noise_window': GDIter('6*24**-1'),
         },
     })
     self.add_gs(gs)
    def add_gs(self, gs):
        new_mps = []
        gs.update({
            'dataset_kwargs': {
                'in_attrs': ['obs'] + (['obse'] if USES_OBSE_INPUT else []),
                'rec_attr': 'obs',
                'max_day': self.max_day,
            }
        })
        mps = gs.get_dicts()
        for mp in mps:
            bd = self.base_dict.copy()
            bd.update(mp)
            new_mps += GridSeacher(bd).get_dicts()

        for mp in new_mps:
            for k in self.common_dict.keys():
                for k2 in mp.keys():
                    if k2 != 'dataset_kwargs':
                        mp[k2][k] = self.common_dict[k]
        self.mps += new_mps
kfs = list(range(0, 5)) if main_args.kf == '.' else main_args.kf
kfs = [kfs] if isinstance(kfs, str) else kfs
methods = [
    'linear-fstw', 'bspline-fstw', 'spm-mle-fstw', 'spm-mle-estw',
    'spm-mcmc-fstw', 'spm-mcmc-estw'
] if main_args.method == '.' else main_args.method
methods = [methods] if isinstance(methods, str) else methods

for kf in kfs:
    for method in methods:
        grid_params = {
            'min_dist': 0.5,
            'n_neighbors':
            GDIter(*np.linspace(10, 50, 8).astype(np.int)[::-1]),
        }
        gs = GridSeacher(grid_params)
        bar = ProgressBar(len(gs))
        for params in gs:
            bar(f'method={method} - kf={kf} - params={params}')
            lcset_name = f'{kf}@train.{method}'
            load_rootdir = f'../save/fats/{cfilename}~method={method}'
            map_kwargs = {
                'features_mode': main_args.mode,
                'proj_mode': 'pca+umap',
                'min_dist': params['min_dist'],
                'n_neighbors': params['n_neighbors'],
            }
            maps2d_dict = get_fitted_maps2d(lcdataset, lcset_name,
                                            load_rootdir, **map_kwargs)
            class_names = lcdataset['raw'].class_names
            for c in [None] + class_names: