完美解决-RuntimeError: CUDA error: device-side assert triggered
网上的解决方案意思是对的,但并没有给出相应的实际解决方法:
问题描述:
当使用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相关推荐
- 已解决RuntimeError: CUDA error: device-side assert triggered异常的正确解决方法,亲测有效!!!
已解决RuntimeError: CUDA error: device-side assert triggered异常的正确解决方法,亲测有效!!! 文章目录 报错问题 解决方法 福利 报错问题 粉丝 ...
- 解决:RuntimeError: CUDA error: device-side assert triggered
@[TOC]解决办法:RuntimeError: CUDA error: device-side assert triggered CUDA kernel errors might be asynch ...
- 出现错误(已解决)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 ...
- RuntimeError: cuda runtime error (59) : device-side assert triggered
问题 在训练 Transformer 的过程中,pytorhc出现的问题:RuntimeError: cuda runtime error (59) : device-side assert trig ...
- Faster rcnn 训练coco2017数据报错 RuntimeError: CUDA error: device-side assert triggered
Faster rcnn 训练coco2017数据报错 RuntimeError: CUDA error: device-side assert triggered 使用faster rcnn训练自己的 ...
- Debug Pytorch: RuntimeError: CUDA error: device-side assert triggered
报错信息 RuntimeError: CUDA error: device-side assert triggered /pytorch/aten/src/THC/THCTensorScatterGa ...
- AssertionError: Invalid device id 和RuntimeError: CUDA error: invalid device ordinal
我在使用torch多卡并行时出现了这个两个问题. ##问题一:AssertionError: Invalid device id,即无效的设备id 出现的原因:结合代码解释: import ...os ...
- [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 ( ...
- 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 ...
最新文章
- aml linux 环境,各位辛苦编译DSDT.aml的兄弟,linux是个好工具啊,简单提取
- 学习XHTML的强烈欲望、!
- php 腾讯逆地址解析,腾讯地图逆地址解析
- 2.6_Database Interface JDBC及驱动类型
- DevExpress的LookUpEdit怎样不显示列名
- HTML5 Audio标签API整理(三)
- 微信小程序技巧-让特定组件首页始终展示修改编译条件即可,不用改json
- openai-gpt_GPT-3报告存在的问题
- 如何用U盘之家U盘启动盘制作工具实现U盘装系统
- Eclisp配置Maven(基础简易版)
- 12月9日10日 总结
- JavaRebel 2.0 发布,一个JVM插件
- python桌面程序臃肿_为Python应用构建最精简Docker
- Deepin_wine安装超星阅读器及解决乱码问题
- MyBatis Plus逆向生成
- 对dede标签调用的内容进行判断并输出的方法
- 红米k30pro工程包工厂包
- Day2:python爬虫基础学习(大嘘)
- Spring基础学习
- 加速及控制精灵移动,加速计值的处理
热门文章
- Tensorflow2.0学习笔记(一)北大曹健老师教学视频1-4讲
- C语言6度带和3度带计算公式,刚刚,测绘小哥哥告诉了我快速识别3度带、6度带的方法,安排!...
- 基于MFC的图书馆图书管理系统
- mysql pmt函数怎么用_制作C/C++动态链接库(dll)若干注意事项
- 条码打印软件中如何导出条码或二维码矢量文件到Coredraw和Ai
- 证券从业资格考试考几门?一起考。还是分开考?
- 每日一题冲刺大厂 第二十四天 开心的金明
- Ubuntu 20.04安装Leap Motion问题总结
- 搜狗号码通安卓版 2.3.2.13530软件介绍
- c语言修仙一十四洲简介,《C语言修仙·下》编辑推荐、内容简介及作者一十四洲简介...