Learner object has no attribute recorder!

I’m also getting this issue, recorder attribute is not found but should be in the TrackerCallback

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Input In [30], in <module>
     14 p = get_image_path(record_collection_with_negative_small_filtered_val,i)
     15 arr = skio.imread(p)
---> 16 class_pred = learner.predict(arr)
     17 class_pred = class_pred[0].cpu().detach().numpy()
     18 pred_arrs.append(class_pred)

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastai/learner.py:268, in Learner.predict(self, item, rm_type_tfms, with_input)
    266 def predict(self, item, rm_type_tfms=None, with_input=False):
    267     dl = self.dls.test_dl([item], rm_type_tfms=rm_type_tfms, num_workers=0)
--> 268     inp,preds,_,dec_preds = self.get_preds(dl=dl, with_input=True, with_decoded=True)
    269     i = getattr(self.dls, 'n_inp', -1)
    270     inp = (inp,) if i==1 else tuplify(inp)

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastai/learner.py:254, in Learner.get_preds(self, ds_idx, dl, with_input, with_decoded, with_loss, act, inner, reorder, cbs, **kwargs)
    252 ctx_mgrs = self.validation_context(cbs=L(cbs)+[cb], inner=inner)
    253 if with_loss: ctx_mgrs.append(self.loss_not_reduced())
--> 254 with ContextManagers(ctx_mgrs):
    255     self._do_epoch_validate(dl=dl)
    256     if act is None: act = getattr(self.loss_func, 'activation', noop)

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastcore/xtras.py:499, in ContextManagers.__enter__(self)
--> 499 def __enter__(self): self.default.map(self.stack.enter_context)

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastcore/foundation.py:155, in L.map(self, f, gen, *args, **kwargs)
--> 155 def map(self, f, *args, gen=False, **kwargs): return self._new(map_ex(self, f, *args, gen=gen, **kwargs))

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastcore/basics.py:698, in map_ex(iterable, f, gen, *args, **kwargs)
    696 res = map(g, iterable)
    697 if gen: return res
--> 698 return list(res)

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastcore/basics.py:683, in bind.__call__(self, *args, **kwargs)
    681     if isinstance(v,_Arg): kwargs[k] = args.pop(v.i)
    682 fargs = [args[x.i] if isinstance(x, _Arg) else x for x in self.pargs] + args[self.maxi+1:]
--> 683 return self.func(*fargs, **kwargs)

File ~/miniconda3/envs/fastai2/lib/python3.9/contextlib.py:448, in _BaseExitStack.enter_context(self, cm)
    446 _cm_type = type(cm)
    447 _exit = _cm_type.__exit__
--> 448 result = _cm_type.__enter__(cm)
    449 self._push_cm_exit(cm, _exit)
    450 return result

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastcore/xtras.py:499, in ContextManagers.__enter__(self)
--> 499 def __enter__(self): self.default.map(self.stack.enter_context)

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastcore/foundation.py:155, in L.map(self, f, gen, *args, **kwargs)
--> 155 def map(self, f, *args, gen=False, **kwargs): return self._new(map_ex(self, f, *args, gen=gen, **kwargs))

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastcore/basics.py:698, in map_ex(iterable, f, gen, *args, **kwargs)
    696 res = map(g, iterable)
    697 if gen: return res
--> 698 return list(res)

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastcore/basics.py:683, in bind.__call__(self, *args, **kwargs)
    681     if isinstance(v,_Arg): kwargs[k] = args.pop(v.i)
    682 fargs = [args[x.i] if isinstance(x, _Arg) else x for x in self.pargs] + args[self.maxi+1:]
--> 683 return self.func(*fargs, **kwargs)

File ~/miniconda3/envs/fastai2/lib/python3.9/contextlib.py:448, in _BaseExitStack.enter_context(self, cm)
    446 _cm_type = type(cm)
    447 _exit = _cm_type.__exit__
--> 448 result = _cm_type.__enter__(cm)
    449 self._push_cm_exit(cm, _exit)
    450 return result

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastai/learner.py:224, in Learner.__enter__(self)
--> 224 def __enter__(self): self(_before_epoch); return self

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastai/learner.py:141, in Learner.__call__(self, event_name)
--> 141 def __call__(self, event_name): L(event_name).map(self._call_one)

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastcore/foundation.py:155, in L.map(self, f, gen, *args, **kwargs)
--> 155 def map(self, f, *args, gen=False, **kwargs): return self._new(map_ex(self, f, *args, gen=gen, **kwargs))

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastcore/basics.py:698, in map_ex(iterable, f, gen, *args, **kwargs)
    696 res = map(g, iterable)
    697 if gen: return res
--> 698 return list(res)

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastcore/basics.py:683, in bind.__call__(self, *args, **kwargs)
    681     if isinstance(v,_Arg): kwargs[k] = args.pop(v.i)
    682 fargs = [args[x.i] if isinstance(x, _Arg) else x for x in self.pargs] + args[self.maxi+1:]
--> 683 return self.func(*fargs, **kwargs)

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastai/learner.py:145, in Learner._call_one(self, event_name)
    143 def _call_one(self, event_name):
    144     if not hasattr(event, event_name): raise Exception(f'missing {event_name}')
--> 145     for cb in self.cbs.sorted('order'): cb(event_name)

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastai/callback/core.py:45, in Callback.__call__(self, event_name)
     42 _run = (event_name not in _inner_loop or (self.run_train and getattr(self, 'training', True)) or
     43        (self.run_valid and not getattr(self, 'training', False)))
     44 res = None
---> 45 if self.run and _run: res = getattr(self, event_name, noop)()
     46 if event_name=='after_fit': self.run=True #Reset self.run to True at each end of fit
     47 return res

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastai/callback/tracker.py:32, in TrackerCallback.before_fit(self)
     30 self.run = not hasattr(self, "lr_finder") and not hasattr(self, "gather_preds")
     31 if self.reset_on_fit or self.best is None: self.best = float('inf') if self.comp == np.less else -float('inf')
---> 32 assert self.monitor in self.recorder.metric_names[1:]
     33 self.idx = list(self.recorder.metric_names[1:]).index(self.monitor)

File ~/miniconda3/envs/fastai2/lib/python3.9/site-packages/fastcore/basics.py:390, in GetAttr.__getattr__(self, k)
    388     attr = getattr(self,self._default,None)
    389     if attr is not None: return getattr(attr,k)
--> 390 raise AttributeError(k)

AttributeError: recorder

I’m also getting this error with validation = learner.validate()
the suggestion above
from fastai.vision.all import *

did not work for me, same error.