推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
suifengingo
V2EX  ›  Python

神经网络了训练时候报 MemoryError,在线请教

  •  
  •   suifengingo · Dec 14, 2019 · 5283 views
    This topic created in 2349 days ago, the information mentioned may be changed or developed.

    在做图像分类,上千类图像,训练神经网络的时候,程序报错 data = np.array(data, dtype="float") / 255.0 MemoryError (补充:本人已经测试,在选用比较少类别图像的时候,该代码是可以成功运行并能生成训练出的模型文件,但是扩展到上千类之后就报 MemoryError,之前网上搜了相关的错误,有的说是数据增强的原因,可是取消在线数据增强之后,仍然报这个错误,百思不得其解,望能得到高手大佬们的指点帮助,在此小生先谢谢了!

    16 replies    2019-12-15 21:35:26 +08:00
    malusama
        1
    malusama  
       Dec 14, 2019
    上 64 位 或者手动 gc
    suifengingo
        2
    suifengingo  
    OP
       Dec 14, 2019
    @malusama 我用的是 64 位的机器,内存 32G...不知您所说的手动 gc 是什么意思呢
    chempotato
        3
    chempotato  
       Dec 14, 2019 via Android
    gc 内存回收啊
    lspvic
        4
    lspvic  
       Dec 14, 2019 via Android
    减小 batch_size
    szxczyc
        5
    szxczyc  
       Dec 14, 2019 via iPhone
    @lspvic #4 变小了效果会变差的
    nasmatic
        6
    nasmatic  
       Dec 14, 2019 via Android
    @szxczyc 其实还得看实际场景,如果减小了练出来的模型满足需求就行
    helloworld000
        7
    helloworld000  
       Dec 14, 2019
    1. 减少 batch size
    2. quantlization (最简单的,把 tensor 默认的为 float64,改成 float16 )
    3. 上 cluster
    mayfly233
        8
    mayfly233  
       Dec 15, 2019
    减少 batch size 再做 batch accumulation 呗,不就一样了

    或者就用 apex fp16,立竿见影,不过看框架兼容
    lonelygo
        9
    lonelygo  
       Dec 15, 2019
    几张卡?加起来都多大内存?
    减小 batch_size,从 2 开始吧,要是=2 都不行,只能考虑上 cluster 了。
    还有就是降到半精度试试看
    或者,把主干网换一个不太深的。
    suifengingo
        10
    suifengingo  
    OP
       Dec 15, 2019
    谢谢大佬们的热心解答,我再去按照大佬们说的试试看
    laminux29
        11
    laminux29  
       Dec 15, 2019
    用 SSD 做虚拟内存。
    tfdetang
        12
    tfdetang  
       Dec 15, 2019
    你这句报错是在 input 输入的时候就报错了? 所以数据生成部分是怎么写的? 可以试试 tf.data
    dick20cm
        13
    dick20cm  
       Dec 15, 2019 via Android
    兄弟,别搞这个了,你不适合,真心劝退
    rpman
        14
    rpman  
       Dec 15, 2019 via iPhone
    内存不够吧。
    suifengingo
        15
    suifengingo  
    OP
       Dec 15, 2019
    @mayfly233 请问下如何加入 batch accumulation ?虚心求教
    mayfly233
        16
    mayfly233  
       Dec 15, 2019
    第一个 batch 计算完别更新梯度,算完第二个 batch 再合并起来更新梯度,不就相当于累积 batch size x 2 了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5173 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 66ms · UTC 08:41 · PVG 16:41 · LAX 01:41 · JFK 04:41
    ♥ Do have faith in what you're doing.