一、问题描述
在训练textcnn模型的时候,程序报错 Process finished with exit code -1073741819 (0xC0000005),而此时我已经训练了一部分数据,也就是它是在训练中途报错的。
我的一些参数:
训练数据:8万条
epoches = 5 #训练过程中数据集的遍历次数
batchsize=128 #每次训练过程中同时处理的样本数量
embeddingSize = 200 #嵌入层的维度大小
numFilters = 96 #卷积层中滤波器的数量
filterSizes = [2, 3, 4, 5] #卷积层中每个滤波器的尺寸
二、问题分析与解决
1、我在网上查找关于这类报错的解决方案,有重装h5py的有在idesetting中取消qtpy兼容的,我没有尝试这些方案,因为我觉得我的程序和配置是没问题的,它已经训练了一部分数据,是可以跑起来的。
然后我看到了这个回答:
https://zhuanlan.zhihu.com/p/481840857
我基本确定应该是我内存的问题。(在此之前我还拿一个3000条数据训练了一下,完全不会报错)
2、然后我问了AI,它说我的batchsize设置的太大了,训练过程中内存不足,让我设置的小一点,我就设置成32,结果还没有之前跑得多。于是我就反向操作,将batchsize设置成256,结果跑通了。
分析一下:当 batchSize 较小时,如果模型和数据集较大,每次迭代可能仍然需要相当多的内存。如果系统内存不足,可能会导致内存分配失败或尝试访问无效的内存地址。
三、总结
1、解决方案
根据硬件条件和训练数据量合理设置batchsize,我的数据为8万条,所以我增大batchsize到256。
2、总结
设置更好的batch size值需要综合考虑多个因素,包括数据集大小、模型复杂度、硬件资源以及训练目标等。在实际应用中,可以根据具体情况进行多次实验和测试,从16开始逐渐向上调整,以找到最适合你的任务和硬件的batch size设置。
————————————————————————
更新:后面换了个数据集又跑不起来了,找老师借了台内存比较大的电脑,就没有再遇到这样的问题了。归根结底还是内存问题。