TypeError: crop_pad() missing 1 required positional argument: 'size'

After updating fast-ai library:

sudo /opt/anaconda3/bin/conda install -c fastai fastai
Solving environment: done

## Package Plan ##

  environment location: /opt/anaconda3

  added / updated specs: 
    - fastai


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    fastprogress-0.1.15        |             py_0          13 KB  fastai
    fastai-1.0.19              |             py_1          92 KB  fastai
    ------------------------------------------------------------
                                           Total:         105 KB

The following packages will be UPDATED:

    fastai:       1.0.13-py_1 fastai --> 1.0.19-py_1 fastai
    fastprogress: 0.1.10-py_0 fastai --> 0.1.15-py_0 fastai

Proceed ([y]/n)? y


Downloading and Extracting Packages
fastprogress-0.1.15  | 13 KB     | ################################################################################################################## | 100% 
fastai-1.0.19        | 92 KB     | ################################################################################################################## | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

I am getting below error for data.show_batch(rows=3, figsize=(7,6)) and learn.fit_one_cycle(4) respectively
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
in
----> 1 data.show_batch(rows=3, figsize=(7,6))

/opt/anaconda3/lib/python3.6/site-packages/fastai/vision/data.py in show_batch(self, rows, figsize, is_train)
    365 
    366     def show_batch(self:DataBunch, rows:int=None, figsize:Tuple[int,int]=(9,10), is_train:bool=True)->None:
--> 367         show_image_batch(self.train_dl if is_train else self.valid_dl, self.classes, figsize=figsize, rows=rows)
    368 
    369     def labels_to_csv(self, dest:str)->None:

/opt/anaconda3/lib/python3.6/site-packages/fastai/vision/data.py in show_image_batch(dl, classes, rows, figsize)
     44     fig, axs = plt.subplots(rows,rows,figsize=figsize)
     45     for i, ax in zip(b_idx[:rows*rows], axs.flatten()):
---> 46         x,y = dl.dataset[i]
     47         x.show(ax=ax, y=y, classes=classes)
     48     plt.tight_layout()

/opt/anaconda3/lib/python3.6/site-packages/fastai/vision/data.py in __getitem__(self, idx)
    218         "Return tfms(x),y."
    219         x,y = self.ds[idx]
--> 220         x = apply_tfms(self.tfms, x, **self.kwargs)
    221         if self.tfm_y: y = apply_tfms(self.tfms, y, **self.y_kwargs)
    222         return x, y

/opt/anaconda3/lib/python3.6/site-packages/fastai/vision/image.py in apply_tfms(tfms, x, do_resolve, xtra, size, mult, resize_method, padding_mode, **kwargs)
    591                 if resize_method in (ResizeMethod.CROP,ResizeMethod.PAD):
    592                     x = tfm(x, size=size, padding_mode=padding_mode)
--> 593             else: x = tfm(x)
    594     return x

/opt/anaconda3/lib/python3.6/site-packages/fastai/vision/image.py in __call__(self, x, *args, **kwargs)
    492     def __call__(self, x:Image, *args, **kwargs)->Image:
    493         "Randomly execute our tfm on `x`."
--> 494         return self.tfm(x, *args, **{**self.resolved, **kwargs}) if self.do_run else x
    495 
    496 def _resolve_tfms(tfms:TfmList):

/opt/anaconda3/lib/python3.6/site-packages/fastai/vision/image.py in __call__(self, p, is_random, *args, **kwargs)
    437     def __call__(self, *args:Any, p:float=1., is_random:bool=True, **kwargs:Any)->Image:
    438         "Calc now if `args` passed; else create a transform called prob `p` if `random`."
--> 439         if args: return self.calc(*args, **kwargs)
    440         else: return RandTransform(self, kwargs=kwargs, is_random=is_random, p=p)
    441 

/opt/anaconda3/lib/python3.6/site-packages/fastai/vision/image.py in calc(self, x, *args, **kwargs)
    442     def calc(self, x:Image, *args:Any, **kwargs:Any)->Image:
    443         "Apply to image `x`, wrapping it if necessary."
--> 444         if self._wrap: return getattr(x, self._wrap)(self.func, *args, **kwargs)
    445         else:          return self.func(x, *args, **kwargs)
    446 

/opt/anaconda3/lib/python3.6/site-packages/fastai/vision/image.py in pixel(self, func, *args, **kwargs)
    162     def pixel(self, func:PixelFunc, *args, **kwargs)->'Image':
    163         "Equivalent to `image.px = func(image.px)`."
--> 164         self.px = func(self.px, *args, **kwargs)
    165         return self
    166 

/opt/anaconda3/lib/python3.6/functools.py in wrapper(*args, **kw)
    801 
    802     def wrapper(*args, **kw):
--> 803         return dispatch(args[0].__class__)(*args, **kw)
    804 
    805     registry[object] = func

TypeError: crop_pad() missing 1 required positional argument: 'size'

and

epoch  train_loss  valid_loss  error_rate
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-71-495233eaf2b4> in <module>
----> 1 learn.fit_one_cycle(4)

/opt/anaconda3/lib/python3.6/site-packages/fastai/train.py in fit_one_cycle(learn, cyc_len, max_lr, moms, div_factor, pct_start, wd, callbacks, **kwargs)
     20     callbacks.append(OneCycleScheduler(learn, max_lr, moms=moms, div_factor=div_factor,
     21                                         pct_start=pct_start, **kwargs))
---> 22     learn.fit(cyc_len, max_lr, wd=wd, callbacks=callbacks)
     23 
     24 def lr_find(learn:Learner, start_lr:Floats=1e-7, end_lr:Floats=10, num_it:int=100, stop_div:bool=True, **kwargs:Any):

/opt/anaconda3/lib/python3.6/site-packages/fastai/basic_train.py in fit(self, epochs, lr, wd, callbacks)
    160         callbacks = [cb(self) for cb in self.callback_fns] + listify(callbacks)
    161         fit(epochs, self.model, self.loss_func, opt=self.opt, data=self.data, metrics=self.metrics,
--> 162             callbacks=self.callbacks+callbacks)
    163 
    164     def create_opt(self, lr:Floats, wd:Floats=0.)->None:

/opt/anaconda3/lib/python3.6/site-packages/fastai/basic_train.py in fit(epochs, model, loss_func, opt, data, callbacks, metrics)
     92     except Exception as e:
     93         exception = e
---> 94         raise e
     95     finally: cb_handler.on_train_end(exception)
     96 

/opt/anaconda3/lib/python3.6/site-packages/fastai/basic_train.py in fit(epochs, model, loss_func, opt, data, callbacks, metrics)
     80             cb_handler.on_epoch_begin()
     81 
---> 82             for xb,yb in progress_bar(data.train_dl, parent=pbar):
     83                 xb, yb = cb_handler.on_batch_begin(xb, yb)
     84                 loss = loss_batch(model, xb, yb, loss_func, opt, cb_handler)

/opt/anaconda3/lib/python3.6/site-packages/fastprogress/fastprogress.py in __iter__(self)
     63         self.update(0)
     64         try:
---> 65             for i,o in enumerate(self._gen):
     66                 yield o
     67                 if self.auto_update: self.update(i+1)

/opt/anaconda3/lib/python3.6/site-packages/fastai/basic_data.py in __iter__(self)
     80     def __iter__(self):
     81         "Process and returns items from `DataLoader`."
---> 82         for b in self.dl: yield self.proc_batch(b)
     83 
     84     def one_batch(self)->Collection[Tensor]:

/opt/anaconda3/lib/python3.6/site-packages/torch/utils/data/dataloader.py in __next__(self)
    635                 self.reorder_dict[idx] = batch
    636                 continue
--> 637             return self._process_next_batch(batch)
    638 
    639     next = __next__  # Python 2 compatibility

/opt/anaconda3/lib/python3.6/site-packages/torch/utils/data/dataloader.py in _process_next_batch(self, batch)
    656         self._put_indices()
    657         if isinstance(batch, ExceptionWrapper):
--> 658             raise batch.exc_type(batch.exc_msg)
    659         return batch
    660 

TypeError: Traceback (most recent call last):
  File "/opt/anaconda3/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 138, in _worker_loop
    samples = collate_fn([dataset[i] for i in batch_indices])
  File "/opt/anaconda3/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 138, in <listcomp>
    samples = collate_fn([dataset[i] for i in batch_indices])
  File "/opt/anaconda3/lib/python3.6/site-packages/fastai/vision/data.py", line 220, in __getitem__
    x = apply_tfms(self.tfms, x, **self.kwargs)
  File "/opt/anaconda3/lib/python3.6/site-packages/fastai/vision/image.py", line 593, in apply_tfms
    else: x = tfm(x)
  File "/opt/anaconda3/lib/python3.6/site-packages/fastai/vision/image.py", line 494, in __call__
    return self.tfm(x, *args, **{**self.resolved, **kwargs}) if self.do_run else x
  File "/opt/anaconda3/lib/python3.6/site-packages/fastai/vision/image.py", line 439, in __call__
    if args: return self.calc(*args, **kwargs)
  File "/opt/anaconda3/lib/python3.6/site-packages/fastai/vision/image.py", line 444, in calc
    if self._wrap: return getattr(x, self._wrap)(self.func, *args, **kwargs)
  File "/opt/anaconda3/lib/python3.6/site-packages/fastai/vision/image.py", line 164, in pixel
    self.px = func(self.px, *args, **kwargs)
  File "/opt/anaconda3/lib/python3.6/functools.py", line 803, in wrapper
    return dispatch(args[0].__class__)(*args, **kw)
TypeError: crop_pad() missing 1 required positional argument: 'size'

Let us see your notebook.

Are you sure you are specifying the size for your images?

np.random.seed(42)
data=ImageDataBunch.from_folder(path_img, train=".", valid=".", valid_pct=0.2, 
                                ds_tfms=get_transforms(), size=224, num_workers=4)
data.normalize(imagenet_stats)

The images I uploaded from a dataset I have (not from search engine).

i get that error almost every time i have med small change in the vision module.
To get around it i restart the notebook kernel

2 Likes

oh wow… that fixed it…! Thank you @Kaspar