Am getting the following error while trying to say model with FocalLossFlat() loss function. Same model is saved without problems if I use CrossEntropyFlat() instead.
learn = Learner(dls, model, loss_func=FocalLossFlat(gamma=gamma))
learn.fit_one_cycle(1, lr, wd=wd)
..
learn.export("filename.pkl")
--------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[85], line 4
1 # Save model
2 # Export pickles the entire learner object. Including the dataloaders, loss function, optimizer, augmentations
3 # or transforms, and all callbacks. But will not point to any data
----> 4 learn.export(modelpath/"atm_recommender_export.pkl")
File ~/Workbench/fastai/fastai/fastai/learner.py:433, in export(self, fname, pickle_module, pickle_protocol)
430 with warnings.catch_warnings():
431 #To avoid the warning that come from PyTorch about model not being checked
432 warnings.simplefilter("ignore")
--> 433 torch.save(self, self.path/fname, pickle_module=pickle_module, pickle_protocol=pickle_protocol)
434 self.create_opt()
435 if state is not None: self.opt.load_state_dict(state)
File ~/.miniconda/envs/fastai/lib/python3.9/site-packages/torch/serialization.py:423, in save(obj, f, pickle_module, pickle_protocol, _use_new_zipfile_serialization)
421 if _use_new_zipfile_serialization:
422 with _open_zipfile_writer(f) as opened_zipfile:
--> 423 _save(obj, opened_zipfile, pickle_module, pickle_protocol)
424 return
425 else:
File ~/.miniconda/envs/fastai/lib/python3.9/site-packages/torch/serialization.py:635, in _save(obj, zip_file, pickle_module, pickle_protocol)
633 pickler = pickle_module.Pickler(data_buf, protocol=pickle_protocol)
634 pickler.persistent_id = persistent_id
--> 635 pickler.dump(obj)
636 data_value = data_buf.getvalue()
637 zip_file.write_record('data.pkl', data_value, len(data_value))
TypeError: cannot pickle 'code' object