请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

mnist = fetch_openml('mnist_784')执行被系统kill

我用的是云服务器,内存只有2G,每次执行mnist = fetch_openml(‘mnist_784’) 到十几秒钟后,进程被系统killed, 我怀疑是内存不够。 在我本地电脑(内存8G)上是没问题的,在本地电脑上执行这行代码时,查看占用内存2.8G。可以证实就是我的云服务器内存不够导致进程被杀。
我想请问一下老师,在机器学习中,肯定会碰到大量数据加载的情况,这次我碰到的是超过2G,还可以换个电脑试试,下次如果碰到超过8G,那我不就没办法了? 在实际生产环境中肯定也有内存不够的情况,请问是如何解决使用较小内存电脑跑大量数据的呢? 如果我想在2G内存的电脑上加载mnist数据,怎么处理呢?

正在回答

1回答

和所有的算法一样,当不能把所有数据加载进内存的时候,就需要外存算法。比如如果待排序的数据不能在内存中加载的话,就需要外排序算法。


对于机器学习算法来说,一个简单的方式,使用在线学习的方式。在线学习的本意是数据不能一次性提供,我们可以在生产环境中,随着新的数据产生,逐渐更新模型。但是这个想法可以用于处理内存不够的情况,即把数据分成多份,每一份可以放进进内存,然后分批处理。


当然,并不是所有的机器学习算法都支持在线学习。对于不支持在线学习的算法,只能设计专门的在具体计算过程中,需要的时候,从磁盘读取所用的数据的机制。(类似数据库。实际上,现在很多大数据框架做的就是这件事儿。)


顺便一提,大概 2015 年前后,有一家创业公司,叫 turi,他们做的事情,就是编写了一套机器学习的框架,类似 sklearn 或者 tensorflow 做的事情。但是,他们的特点就是,这套框架的所有算法支持外存计算。后来,这叫公司被苹果收购了。我在这里做过一个简单的介绍:https://t.zsxq.com/ZbYB2by


继续加油!:)


0 回复 有任何疑惑可以回复我~
  • 提问者 jjxiong #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2021-07-07 08:29:15
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号