AttributeError: 'NoneType' object has no attribute 'children'

traceback:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-119-0edcb666e5b6> in <module>
----> 1 learner.split(split_on = list_layers)

/opt/conda/lib/python3.7/site-packages/fastai/basic_train.py in split(self, split_on)
209         "Split the model at `split_on`."
210         if isinstance(split_on,Callable): split_on = split_on(self.model)
--> 211         self.layer_groups = split_model(self.model, split_on)
212         return self
213 

/opt/conda/lib/python3.7/site-packages/fastai/torch_core.py in split_model(model, splits)
186     if isinstance(splits[0], nn.Module):
187         layers = flatten_model(model)
--> 188         idxs = [layers.index(first_layer(s)) for s in splits]
189         return split_model_idx(model, idxs)
190     return [nn.Sequential(*s) for s in splits]

/opt/conda/lib/python3.7/site-packages/fastai/torch_core.py in <listcomp>(.0)
186     if isinstance(splits[0], nn.Module):
187         layers = flatten_model(model)
--> 188         idxs = [layers.index(first_layer(s)) for s in splits]
189         return split_model_idx(model, idxs)
190     return [nn.Sequential(*s) for s in splits]

/opt/conda/lib/python3.7/site-packages/fastai/torch_core.py in first_layer(m)
168 def first_layer(m:nn.Module)->nn.Module:
169     "Retrieve first layer in a module `m`."
--> 170     return flatten_model(m)[0]
171 
172 def last_layer(m:nn.Module)->nn.Module:

/opt/conda/lib/python3.7/site-packages/fastai/torch_core.py in <lambda>(m)
164     return children
165 
--> 166 flatten_model = lambda m: sum(map(flatten_model,children_and_parameters(m)),[]) if num_children(m) else [m]
167 
168 def first_layer(m:nn.Module)->nn.Module:

/opt/conda/lib/python3.7/site-packages/fastai/torch_core.py in num_children(m)
145 def num_children(m:nn.Module)->int:
146     "Get number of children modules in `m`."
--> 147     return len(children(m))
148 
149 def range_children(m:nn.Module)->Iterator[int]:

/opt/conda/lib/python3.7/site-packages/fastai/torch_core.py in children(m)
141 def children(m:nn.Module)->ModuleList:
142     "Get children of `m`."
--> 143     return list(m.children())
144 
145 def num_children(m:nn.Module)->int:

AttributeError: 'NoneType' object has no attribute 'children'

Code:

Following the same code with different data: Fastai with 🤗 Transformers (BERT, RoBERTa, ...) | Kaggle
(cell no. 26 onwards)

Why I am getting this error?


versions:

fastai==1.0.57
fastai2==0.0.30
fastavro @ file:///home/conda/feedstock_root/build_artifacts/fastavro_1616266775763/work
fastbook==0.0.16
fastcore==1.3.20
fastprogress==1.0.0
fastrelease==0.1.11
fastrlock==0.6
fasttext==0.9.2
pyfasttext==0.4.6
transformers==2.0.0

Can you share the code you are using to create your learner?

My hunch is that your learner’s model isn’t actually a model that is being passed.

It’s solved now. I used some other version for fastai and transformer and now it’s working fine.