I got error while creating Custom Dataset? help!

import numpy as np 
import pandas as pd
import torch 
import torch.nn as nn
from skimage import io
# image = io.imread(self.image_path[item])
# mask and img learnt from Awsaf's Notebook
class CustomDataset(torch.utils.data.Dataset):
    def __init__(self,image_paths,mask_paths = None,augmentations,preprocessing_fn=None):
        self.image_paths = image_paths
        self.mask_paths = mask_paths
        self.augmentations = augmentations
    def __len__(self):
        return len(self.image_paths)
    
    def __getitem__(self,item):
        image = io.imread(self.image_path[item])
     
        if mask_paths is not None:
            mask = np.load(mask_paths[item])
        
            augmented = self.augmentations(image=image,mask=mask)
            image = augmented["image"]
            mask = augmented["mask"]
            image = np.transpose(image, (2, 0, 1)).astype(np.float32)
            mask = np.transpose(mask, (2, 0, 1)).astype(np.float32)
            
            if preprocessing_fn is not None:
                image = self.preprocessing_fn(image)
            return {
                "image": torch.tensor(image, dtype=torch.float),
                "mask": torch.tensor(mask, dtype=torch.float)
            }
        else:
            augmented = self.augmentations(image=image)
            image = augmented["image"]
            image = np.transpose(image,(2,0,1)).astype(np.float32)
            if preprocessing_fn is not None:
                image = self.preprocessing_fn(image)
            return {
                "image": torch.tensor(image, dtype=torch.float)
            }

File “/tmp/ipykernel_39/3960429903.py”, line 9
def init(self,image_paths,mask_paths = None,augmentations,preprocessing_fn=None):
^
SyntaxError: non-default argument follows default argument

@ptrblck @Nishant_Bhansali

As the error message explains, you need to provide default values for all arguments to a function call after the first default was set.

def __init__(self,image_paths,mask_paths = None,augmentations,preprocessing_fn=None):

is thus wrong and you would have to use:

def __init__(self,image_paths,mask_paths = None, augmentations=DEFAULT_MISSING_HERE, preprocessing_fn=None):
1 Like