问题:
跑训练时,其他的能够准确训练,可是跑其他代码的时候就会出现core dumped,导致不能正确训练。
问题原因
core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump.
一般这种问题,由如下几个原因:
堆栈溢出
内存访问越界,如由于使用错误的下标,导致数组访问越界
显存占有问题。
还有一种原因是:annconda的原因,博主不用anconda安装的tf(在pycharm安装tf,进行训练),进行训练,就不会出现问题,我猜想可能是anconda内存管理有点问题?
解决办法
我自己出现的问题是因为显存占有问题,故采取如下方式解决。
1、将训练脚本进行更改,把其中GPU内存占用比例改小点,即训练中gpu_memory_fraction这个参数。
2、或者将batchsize改小点。
3、在跑深度学习的时候,有时候可能由于关闭程序的不规范,导致显存一直被占用,故要清理显存。
查看占用显存的任务,在终端输入:
watch -n 1 nvidia-smi
出现下图。
可以看出,PID为3848任务占用了显存。故需要清理这个显存。
输入命令,其中PID为编号数字,需要清理哪个任务,就将PID改为那个任务的数字。
sudo kill -9 PID
完结。。。。。