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

自定义Dataset加载到Dataloader时遇类型错误:'list'无法转为整数

解决:'list' object cannot be interpreted as integer 类型错误

核心问题

你的自定义vids_and_label类中,__len__方法错误地返回了列表self.video_title,但PyTorch的DataLoader要求这个方法必须返回整数类型的数据集总长度,这就是触发错误的直接原因。

修复步骤

修改__len__方法,返回数据集的实际长度(即视频标题列表的元素个数):

def __len__(self):
    return len(self.video_title)

额外优化建议

  • 标签判断逻辑可以简化,减少冗余代码:
    # 替代原有的两次if判断
    _label = 0 if _label.lower() == 'fake' else 1
    
  • 优化标签查询效率:在__init__阶段提前构建文件名到标签的字典,避免在__getitem__中每次都执行DataFrame查询操作,示例如下:
    def __init__(self, vid_title, labels, sequence_length=60, transform=None):
        self.label = labels
        self.video_title = vid_title
        self.sequence_length = sequence_length
        self.transform = transform
        # 提前构建文件名到标签的映射字典
        self.label_map = dict(zip(labels['file'], labels.iloc[:,1].apply(lambda x: 0 if x.lower() == 'fake' else 1)))
    
    def __getitem__(self, item):
        path = self.video_title[item]
        _vid = f'{path}'.split('\\')[-1]
        # 直接通过字典取标签
        _label = self.label_map[_vid]
        # 后续帧处理代码不变...
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:05:32