--- title: Ensemble Learner keywords: fastai sidebar: home_sidebar summary: "Implements functions necessary to build an `EnsembleLearner` suitable for bioimgage segmentation" description: "Implements functions necessary to build an `EnsembleLearner` suitable for bioimgage segmentation" nb_path: "nbs/00_learner.ipynb" ---
{% raw %}
{% endraw %} {% raw %}
{% endraw %}

Config

{% raw %}

class Config[source]

Config(proj_dir:str='deepflash2', staple_thres:float=0.5, staple_fval:int=1, mv_undec:int=0, n:int=4, max_splits:int=5, repo:str='matjesg/deepflash2', arch:str='unext50_deepflash2', pretrained:str=None, random_state:int=42, encoder_name:str='efficientnet-b4', encoder_weights:str='imagenet', c:int=2, il:bool=False, lr:float=0.001, bs:int=4, wd:float=0.001, mpt:bool=False, optim:str='ranger', loss:str='WeightedSoftmaxCrossEntropy', n_iter:int=1000, tta:bool=True, CLAHE_clip_limit:float=0.0, brightness_limit:float=0.0, contrast_limit:float=0.0, zoom_sigma:float=0.0, flip:bool=True, rot:int=360, deformation_grid:int=150, deformation_magnitude:int=10, loss_alpha:float=0.5, loss_beta:float=0.5, loss_gamma:float=2.0, bwf:int=25, bws:int=10, fds:int=10, fbr:float=0.5, pred_tta:bool=True, extra_padding:int=100, kernel:str='rbf', nu:float=0.01, gamma:float=0.01, energy_ks:int=20, gt_dir:str='GT_Estimation', train_dir:str='Training', pred_dir:str='Prediction', ens_dir:str='ensemble', val_dir:str='valid')

Config class for settings.

{% endraw %} {% raw %}
{% endraw %} {% raw %}
t1 = Config(n=3)
t1.save('test_config')
t2 = Config()
t2.load('test_config.json')
test_eq(t1, t2)
Saved current configuration to test_config.json
Successsfully loaded configuration from test_config.json
{% endraw %} {% raw %}
{% endraw %}

Patches for the fastai Learner

{% raw %}

Learner.apply_dropout[source]

Learner.apply_dropout()

If a module contains 'dropout', it will be switched to .train() mode.

{% endraw %} {% raw %}
{% endraw %} {% raw %}

energy_max[source]

energy_max(e, ks=20, dim=None)

{% endraw %} {% raw %}
{% endraw %} {% raw %}
e = np.random.randn(1024,1024)
test_close(energy_max(e, ks=100),0, eps=1e-01)
{% endraw %} {% raw %}

Learner.predict_tiles[source]

Learner.predict_tiles(ds_idx=1, dl=None, path=None, mc_dropout=False, n_times=1, use_tta=False, tta_merge='mean', tta_tfms=None, uncertainty_estimates=True, energy_T=1)

Make predictions and reconstruct tiles, optional with dropout and/or tta applied.

{% endraw %} {% raw %}
{% endraw %} {% raw %}
mask = (np.random.rand(1024,1024)>0.5).astype('uint8')
imageio.imsave('tst_msk.png', mask)
files = [Path('tst_msk.png')]
model = TestModel(padding=50)
ds_kwargs = {'tile_shape':(256,256), 'padding':(76,76), 'scale':1}
ds = TileDataset(files, **ds_kwargs)
dls = DataLoaders.from_dsets(ds, batch_size=4, shuffle=False, drop_last=False)
learn = Learner(dls, model, loss_func='')
g_smx, g_seg, g_std, g_eng = learn.predict_tiles(dl=dls.train)
out = g_seg[files[0]][:]
test_eq(mask, out)
{% endraw %}

Ensemble Learner

{% raw %}
{% endraw %} {% raw %}
{% endraw %} {% raw %}

class EnsembleLearner[source]

EnsembleLearner(image_dir='images', mask_dir=None, config=None, path=None, ensemble_dir=None, item_tfms=None, label_fn=None, metrics=None, cbs=None, ds_kwargs={}, dl_kwargs={}, model_kwargs={}, stats=None, files=None) :: GetAttr

Meta class to train and predict model ensembles with n models

{% endraw %}