I am trying to load a pretrained model but I'm hitting an error when I do. AttributeError: module 'collections' has no attribute 'Sized'
from fastai import *
from fastai.vision import *
from matplotlib.pyplot import imshow
import numpy as np
import matplotlib.pyplot as plt
from skimage.transform import resize
from PIL import Image
learn = load_learner("", "model.pkl")
These are the version I'm using.
torch 1.11.0
torchvision 0.12.0
python 3.10.14
fastai 1.0.60
Can someone help me fix this problem?
File c:\Users\lib\site-packages\fastai\basic_train.py:620, in load_learner(path, file, test, tfm_y, **db_kwargs)
618 state = torch.load(source, map_location='cpu') if defaults.device == torch.device('cpu') else torch.load(source)
619 model = state.pop('model')
--> 620 src = LabelLists.load_state(path, state.pop('data'))
621 if test is not None: src.add_test(test, tfm_y=tfm_y)
622 data = src.databunch(**db_kwargs)
File c:\Users\lib\site-packages\fastai\data_block.py:578, in LabelLists.load_state(cls, path, state)
576 "Create a `LabelLists` with empty sets from the serialized `state`."
577 path = Path(path)
--> 578 train_ds = LabelList.load_state(path, state)
579 valid_ds = LabelList.load_state(path, state)
580 return LabelLists(path, train=train_ds, valid=valid_ds)
File c:\Users\lib\site-packages\fastai\data_block.py:690, in LabelList.load_state(cls, path, state)
687 @classmethod
688 def load_state(cls, path:PathOrStr, state:dict) -> 'LabelList':
689 "Create a `LabelList` from `state`."
--> 690 x = state['x_cls']([], path=path, processor=state['x_proc'], ignore_empty=True)
691 y = state['y_cls']([], path=path, processor=state['y_proc'], ignore_empty=True)
...
--> 298 if not isinstance(a, collections.Sized) and not getattr(a,'__array_interface__',False):
299 a = list(a)
300 if np.int_==np.int32 and dtype is None and is_listy(a) and len(a) and isinstance(a[0],int):
AttributeError: module 'collections' has no attribute 'Sized'
Your fastai
is too old: the current version is 2.7.15 while yours is 1.0.60.
1.0.60 seems to have been written for Python 2, whose collections
had Sized
.
The simple solution is to update.