本人使用Libtorch做目标检测时,发现一个很偶然的报错情况。
如果模型在很早的epoch就停止训练时,很有可能会输出非常多的框,数量可能在1W以上,而这时会报如下的错误。
处有未经处理的异常: 0xC00000FD: Stack overflow (参数: 0x0000000000000001, 0x00000083E2243FC8)。
在进行了谷歌搜索操作下,发现本质的原因是申请内存太大了,可以尝试的办法是堆栈开得大些,具体操作如下:
参考资料:
0x00007FF774EF28C8 处有未经处理的异常(在xxxx.exe 中): 0xC00000FD: Stack overflow (参数: 0x0000000000000001)
不过本人的做法非常简单粗暴,直接提取输出的框中得分较高的前N个(一般本人取200),这样就不会报错了,具体操作如下:
参考资料:
【Libtorch】对tensor的切片索引