I’ve been working with multiband image data and fastai2, and quick tests for BigEarthNet19 can be found here. Because the dataset is huge, I’ve only tested with smaller samples (20k train, 6k valid, 6k test) and after 25 epochs the results (MultiPre, MultiRec, MultiF1, JaccardMulti and HammingLoss, all relevant micro averages) are worse (as expected from randomly selecting some portions of splits).
For some reason, learn.validate()
gives the following error:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-20-631604a2e07b> in <module>
----> 1 learn.validate()
/projappl/project_2001325/miniconda3/envs/ibc-carbon/lib/python3.7/site-packages/fastai2/learner.py in validate(self, ds_idx, dl, cbs)
187 self(_before_epoch)
188 self._do_epoch_validate(ds_idx, dl)
--> 189 self(_after_epoch)
190 return getattr(self, 'final_record', None)
191
/projappl/project_2001325/miniconda3/envs/ibc-carbon/lib/python3.7/site-packages/fastai2/learner.py in __call__(self, event_name)
106 def ordered_cbs(self, cb_func): return [cb for cb in sort_by_run(self.cbs) if hasattr(cb, cb_func)]
107
--> 108 def __call__(self, event_name): L(event_name).map(self._call_one)
109 def _call_one(self, event_name):
110 assert hasattr(event, event_name)
/projappl/project_2001325/miniconda3/envs/ibc-carbon/lib/python3.7/site-packages/fastcore/foundation.py in map(self, f, *args, **kwargs)
360 else f.format if isinstance(f,str)
361 else f.__getitem__)
--> 362 return self._new(map(g, self))
363
364 def filter(self, f, negate=False, **kwargs):
/projappl/project_2001325/miniconda3/envs/ibc-carbon/lib/python3.7/site-packages/fastcore/foundation.py in _new(self, items, *args, **kwargs)
313 @property
314 def _xtra(self): return None
--> 315 def _new(self, items, *args, **kwargs): return type(self)(items, *args, use_list=None, **kwargs)
316 def __getitem__(self, idx): return self._get(idx) if is_indexer(idx) else L(self._get(idx), use_list=None)
317 def copy(self): return self._new(self.items.copy())
/projappl/project_2001325/miniconda3/envs/ibc-carbon/lib/python3.7/site-packages/fastcore/foundation.py in __call__(cls, x, *args, **kwargs)
39 return x
40
---> 41 res = super().__call__(*((x,) + args), **kwargs)
42 res._newchk = 0
43 return res
/projappl/project_2001325/miniconda3/envs/ibc-carbon/lib/python3.7/site-packages/fastcore/foundation.py in __init__(self, items, use_list, match, *rest)
304 if items is None: items = []
305 if (use_list is not None) or not _is_array(items):
--> 306 items = list(items) if use_list else _listify(items)
307 if match is not None:
308 if is_coll(match): match = len(match)
/projappl/project_2001325/miniconda3/envs/ibc-carbon/lib/python3.7/site-packages/fastcore/foundation.py in _listify(o)
240 if isinstance(o, list): return o
241 if isinstance(o, str) or _is_array(o): return [o]
--> 242 if is_iter(o): return list(o)
243 return [o]
244
/projappl/project_2001325/miniconda3/envs/ibc-carbon/lib/python3.7/site-packages/fastcore/foundation.py in __call__(self, *args, **kwargs)
206 if isinstance(v,_Arg): kwargs[k] = args.pop(v.i)
207 fargs = [args[x.i] if isinstance(x, _Arg) else x for x in self.pargs] + args[self.maxi+1:]
--> 208 return self.fn(*fargs, **kwargs)
209
210 # Cell
/projappl/project_2001325/miniconda3/envs/ibc-carbon/lib/python3.7/site-packages/fastai2/learner.py in _call_one(self, event_name)
109 def _call_one(self, event_name):
110 assert hasattr(event, event_name)
--> 111 [cb(event_name) for cb in sort_by_run(self.cbs)]
112
113 def _bn_bias_state(self, with_bias): return bn_bias_params(self.model, with_bias).map(self.opt.state)
/projappl/project_2001325/miniconda3/envs/ibc-carbon/lib/python3.7/site-packages/fastai2/learner.py in <listcomp>(.0)
109 def _call_one(self, event_name):
110 assert hasattr(event, event_name)
--> 111 [cb(event_name) for cb in sort_by_run(self.cbs)]
112
113 def _bn_bias_state(self, with_bias): return bn_bias_params(self.model, with_bias).map(self.opt.state)
/projappl/project_2001325/miniconda3/envs/ibc-carbon/lib/python3.7/site-packages/fastai2/callback/core.py in __call__(self, event_name)
21 _run = (event_name not in _inner_loop or (self.run_train and getattr(self, 'training', True)) or
22 (self.run_valid and not getattr(self, 'training', False)))
---> 23 if self.run and _run: getattr(self, event_name, noop)()
24 if event_name=='after_fit': self.run=True #Reset self.run to True at each end of fit
25
/projappl/project_2001325/miniconda3/envs/ibc-carbon/lib/python3.7/site-packages/fastai2/callback/progress.py in after_epoch(self)
82 iters = range_of(rec.losses)
83 val_losses = [v[1] for v in rec.values]
---> 84 x_bounds = (0, (self.n_epoch - len(self.nb_batches)) * self.nb_batches[0] + len(rec.losses))
85 y_bounds = (0, max((max(Tensor(rec.losses)), max(Tensor(val_losses)))))
86 self.progress.mbar.update_graph([(iters, rec.losses), (self.nb_batches, val_losses)], x_bounds, y_bounds)
IndexError: list index out of range
Also the matplotlib errors are not technically errors but log messages. If anyone can tell how to disable them please tell me.