yolov3-channel-and-layer-pruning
yolov3-channel-and-layer-pruning copied to clipboard
训练结束后,程序无法退出的问题
作者您好,我制作了一个很小的数据集,尝试把程序跑通,运行了如下指令:
python train.py --cfg cfg/yolov3-nameplate.cfg --data data/nameplate.data --weights weights/darknet53.conv.74 --epochs 2 --batch-size 4
训练过程正常(checkpoint、TensorBoard都正常),但程序运行到最后无法退出,不知道是什么问题?
我在windows cpu环境下跑的,pytorch1.3,训练集16张图,测试集4张图
你好,无法退出具体是什么表现呢?cpu环境?会不会卡住了?小点bs?
是cpu环境,不是卡住了,bs调成1也是这样,我再程序的最后print(‘end’),程序运行结束输出end后,理论上应该返回命令行,但它没有返回,end后面一直有个光标在跳动。打开任务管理器,有个python的进程,占用很大的内存,但内存大小,句柄数都不变。我开始怀疑是loadimg时多线程的问题,但调整了之后也没有用。。。
查了一晚上,最后问题定位在loss.backward(),只要计算梯度,程序就无法退出,查进程里就有个占很大内存的python进程,不知道是否是pytorch1.3不兼容的问题
但是你不是可以去到xx epochs compledted in xx那里么?你的finish和end是摆在哪个位置的?试试把torch.cuda.empty_cache()注释掉?1.3版本还不了解呢
我也第一次遇到这个bug。。整个程序都可以完美运行下来,输出的结果权重一个不少,所以,不管是“xx epochs compledted in xx”,还是我自己加的“finish,end”都能运行下来,就是最后程序退出不了,ctrl+C,sys.exit()都不行,我在anaconda prompt下运行程序的,只有把命令行窗口关了才能退出。我把所有功能全部注释掉才找到是loss.backward()的问题的,也想过是cache问题,把torch.cuda.empty_cache()注释掉这些都尝试过,都没用。我准备用pytorch1.1或1.2试试,作者你试过用pytorch1.1可以跑嘛
我用的1.2,小伙伴1.1也ok,cpu版没用过,不知道为什么不释放内存。。。
谢谢您,问题解决了,pytorch换成1.1版本的就没有问题了
谢谢您,问题解决了,pytorch换成1.1版本的就没有问题了
我也遇到了一模一样的问题,折腾了一晚上,我是1.12.1+cu113,跑任何训练,只要调用了loss.backward,就会导致在最后退出python时卡住,ctrl + c都没用,只有关掉cmd。不知到你现在解决了这个问题没有:)