问题
I am trying to replicate this kaggle notebook https://www.kaggle.com/tanlikesmath/diabetic-retinopathy-with-resnet50-oversampling on Google Colab. The code was working fine till yesterday but today it is throwing a runtime error. Below is the problematic code:
tfms = get_transforms(do_flip=True,flip_vert=True,max_rotate=360,max_warp=0,max_zoom=1.1,max_lighting=0.1,p_lighting=0.5)
src = (ImageList.from_df(df=df,path=data_path,cols='path') #get dataset from dataset //ImageItemList threw errors so changed to ImageList
.split_by_idx(range(len(train_df)-1,len(df))) #Splitting the dataset
.label_from_df(cols='level') #obtain labels from the level column
)
data= (src.transform(tfms,size=sz) #Data augmentation
.databunch(bs=bs,num_workers=0) #DataBunch
.normalize(imagenet_stats) #Normalize
)
I get the following error:
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
/usr/local/lib/python3.6/dist-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:
8 frames
/usr/local/lib/python3.6/dist-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()
/usr/local/lib/python3.6/dist-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
/usr/local/lib/python3.6/dist-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)
/usr/local/lib/python3.6/dist-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)
/usr/local/lib/python3.6/dist-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)
<ipython-input-74-31aae73a70fc> in <module>()
6 )
7 print(src)
----> 8 data= (src.transform(tfms,size=sz) #Data augmentation
9 .databunch(bs=bs,num_workers=0) #DataBunch
10 .normalize(imagenet_stats) #Normalize
/usr/local/lib/python3.6/dist-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)
/usr/local/lib/python3.6/dist-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)))
/usr/local/lib/python3.6/dist-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
I changed nothing in this code, it is the same as it was yesterday but for some reason it gives me an error today. Kindly Help.
Edit: I found out it is working perfectly fine on my local Jupyter notebook. Still shows error for Colab though
回答1:
It seems that some issues with torch that is used in colab
FastAI Forum Try to install specific version of torch in your colab before run fastAI python code
!pip install "torch==1.4" "torchvision==0.5.0"
来源:https://stackoverflow.com/questions/61503339/error-while-applying-image-augmentation-transformations-to-data-in-fastai