Assertion `t >= 0 && t < n_classes` failed.

vscode 进行训练出错。到底是哪里出问题了

/opt/conda/conda-bld/pytorch_1565272279342/work/aten/src/THCUNN/ClassNLLCriterion.cu:105: void cunn_ClassNLLCriterion_updateOutput_kernel(Dtype *, Dtype *, Dtype *, long *, Dtype *, int, int, int, int, long) [with Dtype = float, Acctype = float]: block: [0,0,0], thread: [3,0,0] Assertion `t >= 0 && t < n_classes` failed.
Traceback (most recent call last):
  File "train_classify.py", line 277, in <module>
    train(args, model, criterion, optimizer, device, train_dataloader, writer, epoch)
  File "train_classify.py", line 42, in train
    running_loss += loss.item()
RuntimeError: CUDA error: device-side assert triggered

 

这个应该是标签问题,标签的类数目超过你训练的类数目,比如只有5个来,id是0-4,这时候来个id=6的,就会出现错误。

解决方法有两种,一种就是写个脚本检查下标签文件里面的标签,找到超过类别的,去掉就行,第二就是进入到train里面之前检查一下标签的数据

没有程序    不好判断    看下这篇文章   https://www.cnblogs.com/henuliulei/p/13258297.html   可能有用

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632