在做图像分类,上千类图像,训练神经网络的时候,程序报错 data = np.array(data, dtype="float") / 255.0 MemoryError (补充:本人已经测试,在选用比较少类别图像的时候,该代码是可以成功运行并能生成训练出的模型文件,但是扩展到上千类之后就报 MemoryError,之前网上搜了相关的错误,有的说是数据增强的原因,可是取消在线数据增强之后,仍然报这个错误,百思不得其解,望能得到高手大佬们的指点帮助,在此小生先谢谢了!
在做图像分类,上千类图像,训练神经网络的时候,程序报错 data = np.array(data, dtype="float") / 255.0 MemoryError (补充:本人已经测试,在选用比较少类别图像的时候,该代码是可以成功运行并能生成训练出的模型文件,但是扩展到上千类之后就报 MemoryError,之前网上搜了相关的错误,有的说是数据增强的原因,可是取消在线数据增强之后,仍然报这个错误,百思不得其解,望能得到高手大佬们的指点帮助,在此小生先谢谢了!
|
malusamaDec 14, 2019
1
上 64 位 或者手动 gc
|
|
2
@malusama 我用的是 64 位的机器,内存 32G...不知您所说的手动 gc 是什么意思呢
|
|
chempotatoDec 14, 2019 via Android
3
gc 内存回收啊
|
|
lspvicDec 14, 2019 via Android
4
减小 batch_size
|
|
helloworld000Dec 14, 2019
7
1. 减少 batch size
2. quantlization (最简单的,把 tensor 默认的为 float64,改成 float16 ) 3. 上 cluster |
|
mayfly233Dec 15, 2019
8
减少 batch size 再做 batch accumulation 呗,不就一样了
或者就用 apex fp16,立竿见影,不过看框架兼容 |
|
lonelygoDec 15, 2019
9
几张卡?加起来都多大内存?
减小 batch_size,从 2 开始吧,要是=2 都不行,只能考虑上 cluster 了。 还有就是降到半精度试试看 或者,把主干网换一个不太深的。 |
|
10
谢谢大佬们的热心解答,我再去按照大佬们说的试试看
|
|
laminux29Dec 15, 2019
11
用 SSD 做虚拟内存。
|
|
tfdetangDec 15, 2019
12
你这句报错是在 input 输入的时候就报错了? 所以数据生成部分是怎么写的? 可以试试 tf.data
|
|
dick20cmDec 15, 2019 via Android
13
兄弟,别搞这个了,你不适合,真心劝退
|
|
rpmanDec 15, 2019 via iPhone
14
内存不够吧。
|
|
15
@mayfly233 请问下如何加入 batch accumulation ?虚心求教
|
|
mayfly233Dec 15, 2019
16
第一个 batch 计算完别更新梯度,算完第二个 batch 再合并起来更新梯度,不就相当于累积 batch size x 2 了
|