You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

报错TypeError: LesionDataset() takes no arguments的排查求助

问题排查与修复方案

核心问题清单

  • 类定义顺序错误:你在实例化LesionDataset之后才定义这个类,还错误地从datasets模块调用它(你的类根本不在该模块内)
  • 缩进错误:__init__方法内的代码块没有缩进,Python会判定方法定义结束,导致__init__没有参数处理逻辑
  • 方法名拼写错误:__getiitem__应为__getitem__(多了一个字母i)
  • 继承错误:dataset应该是对应的数据基类(比如PyTorch的torch.utils.data.Dataset),且你未导入该基类
  • 逻辑错误:img_dir是文件夹路径,不是列表,直接调用len(self.img_dir)和self.img_dir[idx]完全不成立,需要读取目录文件列表与CSV标签内容

修复后的代码示例

# 导入必要模块(以PyTorch数据集为例)
from torch.utils.data import Dataset
import os
import pandas as pd

# 先定义类,再实例化
class LesionDataset(Dataset):
    def __init__(self, img_dir, labels_fname):
        self.img_dir = img_dir
        # 读取CSV标签文件
        self.labels_df = pd.read_csv(labels_fname)
        # 获取目录下的图片文件列表(可根据实际格式调整后缀)
        self.img_files = [f for f in os.listdir(img_dir) if f.endswith(('.png', '.jpg', '.jpeg'))]

    def __len__(self):
        # 返回数据集实际长度
        return len(self.img_files)

    def __getitem__(self, idx):
        # 获取对应索引的图片路径
        img_path = os.path.join(self.img_dir, self.img_files[idx])
        # 这里需添加图片读取逻辑(比如用PIL/OpenCV)
        # image = Image.open(img_path).convert('RGB')
        # 从CSV中匹配对应标签(假设CSV含'image_id'和'label'列)
        img_name = self.img_files[idx]
        label = self.labels_df[self.labels_df['image_id'] == img_name]['label'].values[0]
        return img_path, label  # 替换为实际读取的image对象与label

# 直接实例化自定义类,不要从datasets模块调用
ds = LesionDataset('/content/data/img', '/content/data/img/train.csv')
input, label = ds[0]
print(input)
print(label)

关键修复点解释

  1. 调整类定义顺序:必须先定义LesionDataset类,再创建实例,避免模块调用错误
  2. 修正缩进:__init__内的赋值语句需缩进,确保属于方法内部逻辑
  3. 修正方法名:__getitem__是Python容器类必须实现的魔法方法,拼写错误会导致无法通过索引访问数据
  4. 修复数据逻辑:路径不能直接当作列表使用,需读取目录文件、解析CSV标签,建立图片与标签的对应关系
  5. 正确继承基类:如果是PyTorch数据集,必须继承torch.utils.data.Dataset,否则无法兼容数据加载器等工具

内容的提问来源于stack exchange,提问作者Vennnnn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 20:03:10