【BUG】Loss.cu:247:nli_ioss_forward_reduce_cuda_kernel_2d: block: [0,0,0], thread: [0,0,0]

文章描述了一位开发者在使用BERT预训练模型对THUCNews进行14类别新闻分类时遇到的错误,原因是模型的输出类别范围(0-13)与数据集中实际标签范围(1-14)不匹配。解决方法是调整数据集的类别标签映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        记录一下这个折磨我致死,但只是一个小小小小问题的bug。

        任务:用BERT预训练模型对THUCNews做一个14个类别的新闻分类。

        模型:

    def __init__(self, config):
        super(Model, self).__init__()
        self.bert = BertModel.from_pretrained(config.bert_path)
        for param in self.bert.parameters():
            param.requires_grad = True
        self.fc = nn.Linear(config.hidden_size, config.num_classes)

        数据集:

       

         运行后报错:

RuntimeError: CUDA error: device-side assert triggered
CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect. For debugging consider passing CUDA LAUNCH BLOCKING=1
pytorch/aten/src/ATen/native/cuda/Loss.cu:247:nli_ioss_forward_reduce_cuda_kernel_2d: block: [0,0,0], thread: [0,0,0] Assertion t >0 && t <n classes failed.

        解决了!!!        

        查阅了很多解决方案,大概是说模型的输出的类别数与我数据集的类别数对不上,但我当时检查了我的数据集,就是14个类别,我的num_classes=14,直到最后才意识到,模型的14个类别output是0-13,而我的labels是1-14,最后更改了数据集就好了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值