推荐学习书目
› 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 · 5696 views
    This topic created in 2518 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
    malusama
    Dec 14, 2019
    1
    上 64 位 或者手动 gc
    suifengingo
    suifengingo
    OP
    Dec 14, 2019
    2
    @malusama 我用的是 64 位的机器,内存 32G...不知您所说的手动 gc 是什么意思呢
    chempotato
    chempotato
    Dec 14, 2019 via Android
    3
    gc 内存回收啊
    lspvic
    lspvic
    Dec 14, 2019 via Android
    4
    减小 batch_size
    szxczyc
    szxczyc
    Dec 14, 2019 via iPhone
    5
    @lspvic #4 变小了效果会变差的
    nasmatic
    nasmatic
    Dec 14, 2019 via Android
    6
    @szxczyc 其实还得看实际场景,如果减小了练出来的模型满足需求就行
    helloworld000
    helloworld000
    Dec 14, 2019
    7
    1. 减少 batch size
    2. quantlization (最简单的,把 tensor 默认的为 float64,改成 float16 )
    3. 上 cluster
    mayfly233
    mayfly233
    Dec 15, 2019
    8
    减少 batch size 再做 batch accumulation 呗,不就一样了

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