tanluren / yolov3-channel-and-layer-pruning

yolov3 yolov4 channel and layer pruning, Knowledge Distillation 层剪枝,通道剪枝,知识蒸馏
Apache License 2.0
1.5k stars 446 forks source link

训练结束后,程序无法退出的问题 #17

Open wangxiaoyuwangdayu opened 4 years ago

wangxiaoyuwangdayu commented 4 years ago

作者您好,我制作了一个很小的数据集,尝试把程序跑通,运行了如下指令: 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张图

tanluren commented 4 years ago

你好,无法退出具体是什么表现呢?cpu环境?会不会卡住了?小点bs?

wangxiaoyuwangdayu commented 4 years ago

image 是cpu环境,不是卡住了,bs调成1也是这样,我再程序的最后print(‘end’),程序运行结束输出end后,理论上应该返回命令行,但它没有返回,end后面一直有个光标在跳动。打开任务管理器,有个python的进程,占用很大的内存,但内存大小,句柄数都不变。我开始怀疑是loadimg时多线程的问题,但调整了之后也没有用。。。

wangxiaoyuwangdayu commented 4 years ago

查了一晚上,最后问题定位在loss.backward(),只要计算梯度,程序就无法退出,查进程里就有个占很大内存的python进程,不知道是否是pytorch1.3不兼容的问题

tanluren commented 4 years ago

但是你不是可以去到xx epochs compledted in xx那里么?你的finish和end是摆在哪个位置的?试试把torch.cuda.empty_cache()注释掉?1.3版本还不了解呢

wangxiaoyuwangdayu commented 4 years ago

我也第一次遇到这个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可以跑嘛

tanluren commented 4 years ago

我用的1.2,小伙伴1.1也ok,cpu版没用过,不知道为什么不释放内存。。。

wangxiaoyuwangdayu commented 4 years ago

谢谢您,问题解决了,pytorch换成1.1版本的就没有问题了

Fang520 commented 8 months ago

谢谢您,问题解决了,pytorch换成1.1版本的就没有问题了

我也遇到了一模一样的问题,折腾了一晚上,我是1.12.1+cu113,跑任何训练,只要调用了loss.backward,就会导致在最后退出python时卡住,ctrl + c都没用,只有关掉cmd。不知到你现在解决了这个问题没有:)