Hi,
i am trying to use learn.tta() in a python script (not in a notebook) and can’t get it to work. In a notebook it actually works fine.
Thats the code that I am using:
def get_predictions(imgs=None, tta=False):
dl = learn.dls.test_dl(imgs)
if tta:
preds,_ = learn.tta(dl=dl)
else:
preds,_ = learn.get_preds(dl=dl)
dec_preds = [np.argmax(p) for p in preds.tolist()]
labels = [learn.dls.vocab[pred] for pred in dec_preds]
probabilities = [np.max(p) for p in preds.tolist()]
return labels, probabilities
stack trace:
Traceback (most recent call last):
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastai2/learner.py", line 174, in _do_epoch_validate
self.dl = dl; self('begin_validate')
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastai2/learner.py", line 124, in __call__
def __call__(self, event_name): L(event_name).map(self._call_one)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastcore/foundation.py", line 372, in map
return self._new(map(g, self))
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastcore/foundation.py", line 323, in _new
def _new(self, items, *args, **kwargs): return type(self)(items, *args, use_list=None, **kwargs)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastcore/foundation.py", line 41, in __call__
res = super().__call__(*((x,) + args), **kwargs)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastcore/foundation.py", line 314, in __init__
items = list(items) if use_list else _listify(items)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastcore/foundation.py", line 250, in _listify
if is_iter(o): return list(o)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastcore/foundation.py", line 216, in __call__
return self.fn(*fargs, **kwargs)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastai2/learner.py", line 127, in _call_one
[cb(event_name) for cb in sort_by_run(self.cbs)]
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastai2/learner.py", line 127, in <listcomp>
[cb(event_name) for cb in sort_by_run(self.cbs)]
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastai2/callback/core.py", line 24, in __call__
if self.run and _run: getattr(self, event_name, noop)()
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastai2/callback/progress.py", line 26, in begin_validate
def begin_validate(self): self._launch_pbar()
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastai2/callback/progress.py", line 34, in _launch_pbar
self.pbar = progress_bar(self.dl, parent=getattr(self, 'mbar', None), leave=False)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastprogress/fastprogress.py", line 226, in __init__
super().__init__(gen, total, display, leave, parent, master)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastprogress/fastprogress.py", line 24, in __init__
parent.add_child(self)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastprogress/fastprogress.py", line 264, in add_child
self.child.prefix = f'Epoch {self.main_bar.last_v+1}/{self.main_bar.total} :'
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/florian/projects/fastai2-serving/_test/sort_local.py", line 56, in <module>
l,p = get_predictions(imgs=images, tta=True)
File "/Users/florian/projects/fastai2-serving/_test/sort_local.py", line 23, in get_predictions
preds,_ = learn.tta(dl=dl)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastai2/learner.py", line 528, in tta
with dl.dataset.set_split_idx(1): preds,targs = self.get_preds(dl=dl, inner=True)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastai2/learner.py", line 219, in get_preds
self._do_epoch_validate(dl=dl)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastai2/learner.py", line 178, in _do_epoch_validate
dl,*_ = change_attrs(dl, names, old, has); self('after_validate')
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastai2/learner.py", line 124, in __call__
def __call__(self, event_name): L(event_name).map(self._call_one)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastcore/foundation.py", line 372, in map
return self._new(map(g, self))
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastcore/foundation.py", line 323, in _new
def _new(self, items, *args, **kwargs): return type(self)(items, *args, use_list=None, **kwargs)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastcore/foundation.py", line 41, in __call__
res = super().__call__(*((x,) + args), **kwargs)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastcore/foundation.py", line 314, in __init__
items = list(items) if use_list else _listify(items)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastcore/foundation.py", line 250, in _listify
if is_iter(o): return list(o)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastcore/foundation.py", line 216, in __call__
return self.fn(*fargs, **kwargs)
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastai2/learner.py", line 127, in _call_one
[cb(event_name) for cb in sort_by_run(self.cbs)]
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastai2/learner.py", line 127, in <listcomp>
[cb(event_name) for cb in sort_by_run(self.cbs)]
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastai2/callback/core.py", line 24, in __call__
if self.run and _run: getattr(self, event_name, noop)()
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastai2/callback/core.py", line 96, in after_validate
if not self.save_preds: self.preds = detuplify(to_concat(self.preds, dim=self.concat_dim))
File "/Users/florian/miniconda3/envs/fastai2/lib/python3.7/site-packages/fastcore/foundation.py", line 230, in __getattr__
if attr is not None: return getattr(attr,k)
AttributeError: 'Learner' object has no attribute 'preds'