DL debug:Assertion `index >= -sizes[i] && index < sizes[i] && “index out of bounds“` failed.详细解决过程

由于深度学习在GPU上运行,所以报错信息的位置可能不太准确,所以利用CUDA_LAUNCH_BLOCKING=1 来准确定位。即在命令行之前加上,即:

CUDA_LAUNCH_BLOCKING=1 python main.py

DL debug:Assertion `index >= -sizes[i] && index < sizes[i] && “index out of bounds“` failed.详细解决过程_第1张图片

上面报错的意思就是数组下标超了,所以就应该看看到底是等式左边超过了,还是右边超过了。

由于没有在pycharm上配置好,所以只能在服务器上debug(md,马上把pycharm配好,这样可以直接在pycharmdebug了)

由于不知道是这一行的哪里出错了,所以我们得继续拆分:把各个小部分打印出来

DL debug:Assertion `index >= -sizes[i] && index < sizes[i] && “index out of bounds“` failed.详细解决过程_第2张图片
DL debug:Assertion `index >= -sizes[i] && index < sizes[i] && “index out of bounds“` failed.详细解决过程_第3张图片

这样看本应该看出问题,就是第二个的上千,早就超过了第一个的最大下标377,但是当时哈了,没看出来。所以得精确查看哪里出错了,直接code下面的组件:

DL debug:Assertion `index >= -sizes[i] && index < sizes[i] && “index out of bounds“` failed.详细解决过程_第4张图片

发现报错了,然后再联想上面的输出,没错,罪魁祸首就是它,终于找到了。

然后仔细对比才发现第一个数组的长度应该是数据集的长度,而我弄成了data_loader的长度,所以才会超标。

因为data_loader的长度等于数据集/batchsize。不一样

debug得一步一步精确,不断想办法缩小范围。

最后大功告成!

DL debug:Assertion `index >= -sizes[i] && index < sizes[i] && “index out of bounds“` failed.详细解决过程_第5张图片

你可能感兴趣的:(深度学习,bug)