device-side assert triggered原因和解决方法

在服务器上用GPU跑,出现了这个问题,下面是错误

用CPU运行之后,出现的错误是这样的

 我就通过调试,寻找target41的位置

 上网找了很长时间,很多观看数量很多的文章说的是标签错误,经过思考,我明白了标签是什么意思!!!!!!!!!

这就需要了解我实验的背景了,我的数据集是一个分类为0-59,共60个种类的叶片的识别,每个文件夹下有图片,但是有些种类图片太少,所以就把一部分类别的图片移掉了,如图。

举个例子,比如我移掉了20~39这些种类的文件夹,其实我的种类就剩下40种了(但还是存在41,42.....59这些文件夹),但是我没有重新改变文件夹的名字,而我生成标签的时候是根据文件夹的名字生成的,那么数据中就会出现标签为41的图片,但是其实我的总类只有40种,就会报错。

解决方法:
把文件夹的名字重新排序,然后按照文件夹的名字设置标签,就成功了。

下面是我重新排序的代码

import os
# 用于对生成的文件夹再次排序
train_path="../dataset/train"
validation_path="../dataset/validation"


def sort_dir(path,dirname=''):
    files = os.listdir(path)
    for i, file in enumerate(files):
        #### 因为i是从0开始的
        NewName = os.path.join(path, str(i)+dirname)
        OldName = os.path.join(path, file)
        os.rename(OldName, NewName)

def main():
    ####  把所有的文件名字后面加一个a,防止出现重名。否则会出现问题“当文件已存在时,无法创建该文件”
    sort_dir(train_path,'a')
    sort_dir(train_path)
    sort_dir(validation_path,'a')
    sort_dir(validation_path)


if __name__=='__main__':
    main()

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值