fastai / course-v3

The 3rd edition of course.fast.ai
https://course.fast.ai/
Apache License 2.0
4.91k stars 3.57k forks source link

PyTorch 1.5 not working with fastai #507

Open nickcorona opened 4 years ago

nickcorona commented 4 years ago

I get this stack trace when trying to run this command from the first lesson's juptyer notebook.

data = ImageDataBunch.from_name_re(path_img, fnames, pat, ds_tfms=get_transforms(), size=224, bs=bs
                                  ).normalize(imagenet_stats)
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
~\AppData\Local\Programs\Python\Python38\lib\site-packages\fastai\data_block.py in _check_kwargs(ds, tfms, **kwargs)
    593         x = ds[0]
--> 594         try: x.apply_tfms(tfms, **kwargs)
    595         except Exception as e:

~\AppData\Local\Programs\Python\Python38\lib\site-packages\fastai\vision\image.py in apply_tfms(self, tfms, do_resolve, xtra, size, resize_method, mult, padding_mode, mode, remove_out)
    122                     x = tfm(x, size=_get_crop_target(size,mult=mult), padding_mode=padding_mode)
--> 123             else: x = tfm(x)
    124         return x.refresh()

~\AppData\Local\Programs\Python\Python38\lib\site-packages\fastai\vision\image.py in __call__(self, x, *args, **kwargs)
    523         "Randomly execute our tfm on `x`."
--> 524         return self.tfm(x, *args, **{**self.resolved, **kwargs}) if self.do_run else x
    525 

~\AppData\Local\Programs\Python\Python38\lib\site-packages\fastai\vision\image.py in __call__(self, p, is_random, use_on_y, *args, **kwargs)
    469         "Calc now if `args` passed; else create a transform called prob `p` if `random`."
--> 470         if args: return self.calc(*args, **kwargs)
    471         else: return RandTransform(self, kwargs=kwargs, is_random=is_random, use_on_y=use_on_y, p=p)

~\AppData\Local\Programs\Python\Python38\lib\site-packages\fastai\vision\image.py in calc(self, x, *args, **kwargs)
    474         "Apply to image `x`, wrapping it if necessary."
--> 475         if self._wrap: return getattr(x, self._wrap)(self.func, *args, **kwargs)
    476         else:          return self.func(x, *args, **kwargs)

~\AppData\Local\Programs\Python\Python38\lib\site-packages\fastai\vision\image.py in affine(self, func, *args, **kwargs)
    182         m = tensor(func(*args, **kwargs)).to(self.device)
--> 183         self.affine_mat = self.affine_mat @ m
    184         return self

RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #3 'mat2' in call to _th_addmm_out

During handling of the above exception, another exception occurred:

Exception                                 Traceback (most recent call last)
 in 
----> 1 data = ImageDataBunch.from_name_re(path_img, fnames, pat, ds_tfms=get_transforms(), size=224, bs=bs
      2                                   ).normalize(imagenet_stats)

~\AppData\Local\Programs\Python\Python38\lib\site-packages\fastai\vision\data.py in from_name_re(cls, path, fnames, pat, valid_pct, **kwargs)
    156             assert res,f'Failed to find "{pat}" in "{fn}"'
    157             return res.group(1)
--> 158         return cls.from_name_func(path, fnames, _get_label, valid_pct=valid_pct, **kwargs)
    159 
    160     @staticmethod

~\AppData\Local\Programs\Python\Python38\lib\site-packages\fastai\vision\data.py in from_name_func(cls, path, fnames, label_func, valid_pct, seed, **kwargs)
    145         "Create from list of `fnames` in `path` with `label_func`."
    146         src = ImageList(fnames, path=path).split_by_rand_pct(valid_pct, seed)
--> 147         return cls.create_from_ll(src.label_from_func(label_func), **kwargs)
    148 
    149     @classmethod

~\AppData\Local\Programs\Python\Python38\lib\site-packages\fastai\vision\data.py in create_from_ll(cls, lls, bs, val_bs, ds_tfms, num_workers, dl_tfms, device, test, collate_fn, size, no_check, resize_method, mult, padding_mode, mode, tfm_y)
     94                 mode:str='bilinear', tfm_y:bool=False)->'ImageDataBunch':
     95         "Create an `ImageDataBunch` from `LabelLists` `lls` with potential `ds_tfms`."
---> 96         lls = lls.transform(tfms=ds_tfms, size=size, resize_method=resize_method, mult=mult, padding_mode=padding_mode,
     97                             mode=mode, tfm_y=tfm_y)
     98         if test is not None: lls.add_test_folder(test)

~\AppData\Local\Programs\Python\Python38\lib\site-packages\fastai\data_block.py in transform(self, tfms, **kwargs)
    503         if not tfms: tfms=(None,None)
    504         assert is_listy(tfms) and len(tfms) == 2, "Please pass a list of two lists of transforms (train and valid)."
--> 505         self.train.transform(tfms[0], **kwargs)
    506         self.valid.transform(tfms[1], **kwargs)
    507         if self.test: self.test.transform(tfms[1], **kwargs)

~\AppData\Local\Programs\Python\Python38\lib\site-packages\fastai\data_block.py in transform(self, tfms, tfm_y, **kwargs)
    722     def transform(self, tfms:TfmList, tfm_y:bool=None, **kwargs):
    723         "Set the `tfms` and `tfm_y` value to be applied to the inputs and targets."
--> 724         _check_kwargs(self.x, tfms, **kwargs)
    725         if tfm_y is None: tfm_y = self.tfm_y
    726         tfms_y = None if tfms is None else list(filter(lambda t: getattr(t, 'use_on_y', True), listify(tfms)))

~\AppData\Local\Programs\Python\Python38\lib\site-packages\fastai\data_block.py in _check_kwargs(ds, tfms, **kwargs)
    594         try: x.apply_tfms(tfms, **kwargs)
    595         except Exception as e:
--> 596             raise Exception(f"It's not possible to apply those transforms to your dataset:\n {e}")
    597 
    598 class LabelList(Dataset):

Exception: It's not possible to apply those transforms to your dataset:
 Expected object of scalar type Float but got scalar type Double for argument #3 'mat2' in call to _th_addmm_out
abdnafees commented 4 years ago

Encountering the same issue here

What have I tried so far:

  1. Downgrading PyTorch to 1.4.0 and 1.2.0

What do I expect:

  1. Follow lesson1 with Jeremy and complete by today, have been stuck since past two days.

Screenshot from 2020-04-28 22-28-07

guixermo commented 4 years ago

samme issue here...

brenoafb commented 4 years ago

I have encountered a similar problem. Removing the ds_tfms=get_transforms() argument solves it for me. Results may vary, since then data augmentation is not performed (I think).

guixermo commented 4 years ago

I have encountered a similar problem. Removing the ds_tfms=get_transforms() argument solves it for me. Results may vary, since then data augmentation is not performed (I think).

Thats it, if you remove that, it works but then it doesn't do any transformation to the images (size, bright, flip...). The results will be worst. But get_transform() without arguments, does random transformations, so i don get it.

ghost commented 4 years ago

Check out my answer. See if it works for you. comment on pytorch issue about get_transform()

guixermo commented 4 years ago

Check out my answer. See if it works for you. comment on pytorch issue about get_transform()

this worked for me on Google Colab. See my response there. https://github.com/fastai/course-v3/issues/511#issuecomment-622429842

abdnafees commented 4 years ago

Visit my post on fastai forums for the solution it worked for me