以下代码class ShowDataset(Dataset): def __init__(self,name): super().__init__() self.root_dir = settings.real_dir # real_dir = './datasets/real' self.mat_files_rain= natsorted(os.listdir(self.root_dir)) # 对真实雨天图像进行排序 self.file_num = len(self.mat_files_rain) # 返回样本数 def __len__(self): return self.file_num def __getitem__(self, index): file_name = self.mat_files_rain[index] img_file_dir = os.path.join(self.root_dir, file_name) img_file = cv2.imread(img_file_dir).astype(np.float32) / 255 O = np.transpose(img_file, (2, 0, 1)) sample = {'O': O, 'file_name': file_name} return sample在使用dataloaders = {} sample = ShowDataset() dataloaders['train'] = \ DataLoader(sample, batch_size=8, shuffle=True, num_workers=0, drop_last=True)调用时报错TypeError: module() takes at most 2 arguments (3 given)的原因
时间: 2024-02-27 20:56:01 浏览: 252
delphi_dataset.zip_connect_dataset_dataset delphi_delphi dataset
根据你提供的代码,我看到一个问题:你创建`ShowDataset`对象时传递了一个参数`name`,但是`ShowDataset`的构造函数没有定义这个参数。因此,当你尝试调用`ShowDataset()`时,会出现`TypeError: module() takes at most 2 arguments (3 given)`的错误,因为Python认为你传递了不必要的参数。
解决这个问题的方法是删除`ShowDataset`构造函数的`name`参数,因为它在你的代码中没有用到。修改后的`ShowDataset`构造函数应该是这样的:
```
class ShowDataset(Dataset):
def __init__(self):
super().__init__()
self.root_dir = settings.real_dir
self.mat_files_rain= natsorted(os.listdir(self.root_dir))
self.file_num = len(self.mat_files_rain)
def __len__(self):
return self.file_num
def __getitem__(self, index):
file_name = self.mat_files_rain[index]
img_file_dir = os.path.join(self.root_dir, file_name)
img_file = cv2.imread(img_file_dir).astype(np.float32) / 255
O = np.transpose(img_file, (2, 0, 1))
sample = {'O': O, 'file_name': file_name}
return sample
```
然后,你可以使用以下代码来创建`DataLoader`对象:
```
sample = ShowDataset()
dataloaders['train'] = DataLoader(sample, batch_size=8, shuffle=True, num_workers=0, drop_last=True)
```
这应该可以解决你遇到的问题。
阅读全文