推荐学习书目
› 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 · 5601 views
    This topic created in 2485 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   ·   Privacy   ·   Solana   ·   2123 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 00:39 · PVG 08:39 · LAX 17:39 · JFK 20:39
    ♥ Do have faith in what you're doing.