网上的解决方案意思是对的,但并没有给出相应的实际解决方法:

问题描述:

当使用ImageFolder方式构建数据集的时候:

  train_data = torchvision.datasets.ImageFolder(train_path, transform=train_transform)train_loader = DataLoader(train_data, batch_size=batch_size, shuffle=True, num_workers=6)

pytorch会自己扫描train_path下的每一个文件夹(每类图片都位于其类别的文件夹下),并将每一个类映射成数值,比如有4类,类别标签就是[0,1,2,3]。

在进行二分类的时候的确是将标签映射成了[0,1],但是在进行4分类的时候,标签却映射成了[1,2,3,4],因此就会报错:

RuntimeError: CUDA error: device-side assert triggered

我们可以这样打印下相关的输出:

from torch.autograd import Variable
#load_fzdataset是自己定义的读取数据的函数,其返回的是DataLoader对象
train_data,test_data=load_fzdataset(8)
for epoch in range(2):for i, data in enumerate(train_data):# 将数据从 train_loader 中读出来,一次读取的样本数是8个inputs, labels = data# 将这些数据转换成Variable类型inputs, labels = Variable(inputs), Variable(labels)# 接下来就是跑模型的环节了,我们这里使用print来代替print("epoch:", epoch, "的第" , i, "个inputs", inputs.data.size(), "labels", labels.data)

报错时的信息是:

epoch: 0 的第 0 个inputs torch.Size([8, 3, 224, 224]) labels tensor([4, 2, 4, 4, 3, 4, 3, 1])
epoch: 0 的第 1 个inputs torch.Size([8, 3, 224, 224]) labels tensor([3, 1, 1, 3, 4, 4, 4, 2])
epoch: 0 的第 2 个inputs torch.Size([8, 3, 224, 224]) labels tensor([4, 2, 2, 4, 4, 4, 3, 3])
epoch: 0 的第 3 个inputs torch.Size([8, 3, 224, 224]) labels tensor([4, 3, 4, 1, 2, 1, 2, 1])
epoch: 0 的第 4 个inputs torch.Size([8, 3, 224, 224]) labels tensor([1, 1, 1, 1, 4, 4, 3, 1])
epoch: 0 的第 5 个inputs torch.Size([8, 3, 224, 224]) labels tensor([4, 3, 4, 4, 4, 4, 1, 4])
epoch: 0 的第 6 个inputs torch.Size([8, 3, 224, 224]) labels tensor([4, 4, 1, 1, 4, 2, 4, 1])
epoch: 0 的第 7 个inputs torch.Size([8, 3, 224, 224]) labels tensor([4, 4, 4, 3, 4, 3, 4, 4])
epoch: 0 的第 8 个inputs torch.Size([6, 3, 224, 224]) labels tensor([1, 4, 4, 1, 2, 1])
epoch: 1 的第 0 个inputs torch.Size([8, 3, 224, 224]) labels tensor([4, 4, 3, 4, 4, 4, 4, 4])
epoch: 1 的第 1 个inputs torch.Size([8, 3, 224, 224]) labels tensor([2, 4, 1, 1, 4, 4, 2, 4])
epoch: 1 的第 2 个inputs torch.Size([8, 3, 224, 224]) labels tensor([4, 4, 2, 1, 1, 4, 4, 3])
epoch: 1 的第 3 个inputs torch.Size([8, 3, 224, 224]) labels tensor([3, 3, 1, 1, 1, 3, 4, 1])
epoch: 1 的第 4 个inputs torch.Size([8, 3, 224, 224]) labels tensor([3, 4, 2, 4, 1, 1, 4, 1])
epoch: 1 的第 5 个inputs torch.Size([8, 3, 224, 224]) labels tensor([3, 4, 1, 2, 4, 3, 4, 1])
epoch: 1 的第 6 个inputs torch.Size([8, 3, 224, 224]) labels tensor([4, 2, 4, 1, 3, 4, 4, 4])
epoch: 1 的第 7 个inputs torch.Size([8, 3, 224, 224]) labels tensor([1, 1, 2, 4, 1, 4, 4, 4])
epoch: 1 的第 8 个inputs torch.Size([6, 3, 224, 224]) labels tensor([2, 1, 3, 3, 4, 4])

我们只需要这么修改就行了:

from torch.autograd import Variable
#load_fzdataset是自己定义的读取数据的函数,其返回的是DataLoader对象
train_data,test_data=load_fzdataset(8)
for epoch in range(2):for i, data in enumerate(train_data):# 将数据从 train_loader 中读出来,一次读取的样本数是8个inputs, labels = data# 将这些数据转换成Variable类型inputs, labels = Variable(inputs), Variable(labels)-1# 接下来就是跑模型的环节了,我们这里使用print来代替print("epoch:", epoch, "的第" , i, "个inputs", inputs.data.size(), "labels", labels.data)

输出:

epoch: 0 的第 0 个inputs torch.Size([8, 3, 224, 224]) labels tensor([3, 1, 0, 3, 2, 1, 3, 2])
epoch: 0 的第 1 个inputs torch.Size([8, 3, 224, 224]) labels tensor([1, 3, 3, 3, 3, 3, 2, 2])
epoch: 0 的第 2 个inputs torch.Size([8, 3, 224, 224]) labels tensor([3, 3, 0, 0, 3, 2, 1, 3])
epoch: 0 的第 3 个inputs torch.Size([8, 3, 224, 224]) labels tensor([0, 3, 3, 0, 0, 3, 2, 1])
epoch: 0 的第 4 个inputs torch.Size([8, 3, 224, 224]) labels tensor([2, 0, 1, 0, 3, 0, 0, 2])
epoch: 0 的第 5 个inputs torch.Size([8, 3, 224, 224]) labels tensor([3, 3, 0, 0, 0, 3, 3, 3])
epoch: 0 的第 6 个inputs torch.Size([8, 3, 224, 224]) labels tensor([3, 3, 0, 3, 3, 3, 0, 2])
epoch: 0 的第 7 个inputs torch.Size([8, 3, 224, 224]) labels tensor([0, 3, 3, 2, 3, 3, 0, 0])
epoch: 0 的第 8 个inputs torch.Size([6, 3, 224, 224]) labels tensor([3, 3, 3, 1, 2, 1])
epoch: 1 的第 0 个inputs torch.Size([8, 3, 224, 224]) labels tensor([3, 1, 0, 3, 2, 1, 3, 3])
epoch: 1 的第 1 个inputs torch.Size([8, 3, 224, 224]) labels tensor([3, 1, 2, 1, 0, 3, 1, 0])
epoch: 1 的第 2 个inputs torch.Size([8, 3, 224, 224]) labels tensor([0, 3, 3, 0, 0, 1, 2, 2])
epoch: 1 的第 3 个inputs torch.Size([8, 3, 224, 224]) labels tensor([0, 3, 3, 2, 3, 3, 0, 2])
epoch: 1 的第 4 个inputs torch.Size([8, 3, 224, 224]) labels tensor([1, 3, 2, 3, 2, 3, 3, 3])
epoch: 1 的第 5 个inputs torch.Size([8, 3, 224, 224]) labels tensor([3, 0, 3, 3, 0, 3, 0, 3])
epoch: 1 的第 6 个inputs torch.Size([8, 3, 224, 224]) labels tensor([3, 0, 3, 0, 3, 2, 0, 3])
epoch: 1 的第 7 个inputs torch.Size([8, 3, 224, 224]) labels tensor([0, 3, 0, 3, 3, 3, 3, 3])
epoch: 1 的第 8 个inputs torch.Size([6, 3, 224, 224]) labels tensor([2, 1, 0, 3, 2, 0])

完美解决-RuntimeError: CUDA error: device-side assert triggered相关推荐

  1. 已解决RuntimeError: CUDA error: device-side assert triggered异常的正确解决方法,亲测有效!!!

    已解决RuntimeError: CUDA error: device-side assert triggered异常的正确解决方法,亲测有效!!! 文章目录 报错问题 解决方法 福利 报错问题 粉丝 ...

  2. 解决:RuntimeError: CUDA error: device-side assert triggered

    @[TOC]解决办法:RuntimeError: CUDA error: device-side assert triggered CUDA kernel errors might be asynch ...

  3. 出现错误(已解决)RuntimeError: CUDA error: no kernel image is available for execution on the device CUDA ker

    出现问题(已解决)RuntimeError: CUDA error: no kernel image is available for execution on the device CUDA ker ...

  4. RuntimeError: cuda runtime error (59) : device-side assert triggered

    问题 在训练 Transformer 的过程中,pytorhc出现的问题:RuntimeError: cuda runtime error (59) : device-side assert trig ...

  5. Faster rcnn 训练coco2017数据报错 RuntimeError: CUDA error: device-side assert triggered

    Faster rcnn 训练coco2017数据报错 RuntimeError: CUDA error: device-side assert triggered 使用faster rcnn训练自己的 ...

  6. Debug Pytorch: RuntimeError: CUDA error: device-side assert triggered

    报错信息 RuntimeError: CUDA error: device-side assert triggered /pytorch/aten/src/THC/THCTensorScatterGa ...

  7. AssertionError: Invalid device id 和RuntimeError: CUDA error: invalid device ordinal

    我在使用torch多卡并行时出现了这个两个问题. ##问题一:AssertionError: Invalid device id,即无效的设备id 出现的原因:结合代码解释: import ...os ...

  8. [debug] RuntimeError: CUDA error: no kernel image is available for execution on the device

    问题描述 运行程序时出现报错: RuntimeError: CUDA error: no kernel image is available for execution on the device ( ...

  9. RTX 3090运行报错:RuntimeError: CUDA error: no kernel image is available for execution on the device

    RuntimeError: CUDA error: no kernel image is available for execution on the device 安装适用于GeForce RTX ...

最新文章

  1. aml linux 环境,各位辛苦编译DSDT.aml的兄弟,linux是个好工具啊,简单提取
  2. 学习XHTML的强烈欲望、!
  3. php 腾讯逆地址解析,腾讯地图逆地址解析
  4. 2.6_Database Interface JDBC及驱动类型
  5. DevExpress的LookUpEdit怎样不显示列名
  6. HTML5 Audio标签API整理(三)
  7. 微信小程序技巧-让特定组件首页始终展示修改编译条件即可,不用改json
  8. openai-gpt_GPT-3报告存在的问题
  9. 如何用U盘之家U盘启动盘制作工具实现U盘装系统
  10. Eclisp配置Maven(基础简易版)
  11. 12月9日10日 总结
  12. JavaRebel 2.0 发布,一个JVM插件
  13. python桌面程序臃肿_为Python应用构建最精简Docker
  14. Deepin_wine安装超星阅读器及解决乱码问题
  15. MyBatis Plus逆向生成
  16. 对dede标签调用的内容进行判断并输出的方法
  17. 红米k30pro工程包工厂包
  18. Day2:python爬虫基础学习(大嘘)
  19. Spring基础学习
  20. 加速及控制精灵移动,加速计值的处理

热门文章

  1. Tensorflow2.0学习笔记(一)北大曹健老师教学视频1-4讲
  2. C语言6度带和3度带计算公式,刚刚,测绘小哥哥告诉了我快速识别3度带、6度带的方法,安排!...
  3. 基于MFC的图书馆图书管理系统
  4. mysql pmt函数怎么用_制作C/C++动态链接库(dll)若干注意事项
  5. 条码打印软件中如何导出条码或二维码矢量文件到Coredraw和Ai
  6. 证券从业资格考试考几门?一起考。还是分开考?
  7. 每日一题冲刺大厂 第二十四天 开心的金明
  8. Ubuntu 20.04安装Leap Motion问题总结
  9. 搜狗号码通安卓版 2.3.2.13530软件介绍
  10. c语言修仙一十四洲简介,《C语言修仙·下》编辑推荐、内容简介及作者一十四洲简介...