如何利用keras处理超过机器keras 内存不足的数据

51CTO旗下网站
数据太大爆内存怎么办?七条解决思路
在研究、应用机器学习算法的经历中,相信大伙儿经常遇到数据集太大、内存不够用的情况。本文将讨论一些常用的解决办法,供大家参考。
作者:Jason Brownlee来源:| 12:52
在研究、应用机器学习算法的经历中,相信大伙儿经常遇到数据集太大、内存不够用的情况。
这引出一系列问题:
怎么加载十几、几十 GB 的数据文件?
运行数据集的时候算法崩溃了,怎么办?
怎么处理内存不足导致的错误?
本文将讨论一些常用的解决办法,供大家参考。
处理大型 ML 数据文件的七种思路
1. 分配更多内存
有的机器学习工具/库有默认内存设置,比如 Weka。这便是一个限制因素。
你需要检查一下:是否能重新设置该工具/库,分配更多内存。
对于 Weka,你可以在打开应用时,把内存当作一个参数进行调整。
2. 用更小的样本
你真的需要用到全部数据吗?
可以采集一个数据的随机样本,比如前 1,000 或 100,000
行。在全部数据上训练最终模型之前(使用渐进式的数据加载技巧),先试着用这个小样本解决问题。
总的来说,对算法做快速地抽查、看到结果在前后的变化,在机器学习领域是一个很好的习惯。
你还可以考虑:相对于模型技巧,做一个数据大小的敏感性分析。或许,对于你的随机小样本,有一个天然的边际效应递减分水岭。越过这个关口,继续增加的数据规模带来的好处微乎其微。
3. 更多内存
你必须要用 PC 吗?
你可以考虑内存、性能高一个量级的计算设备。比如,租用 AWS 这样的云服务。租用云端有数十 GB
内存的机器,最低价格每小时不到一美元。我个人觉得这是非常实际的选择。
4. 转换数据格式
你是否把数据存为原始的 ASCII 文本,比如 CSV 文件?
或许,使用其它格式能加速数据载入并且降低内存占用。好的选择包括像 GRIB、NetCDF、HDF 这样的二进制格式。
有很多命令行工具能帮你转换数据格式,而且不需要把整个数据集载入内存里。
换一种格式,可能帮助你以更紧凑的形式存储数据,节省内存空间;比如 2-byte 整数,或者 4-byte 浮点。
5. 流式处理数据,或渐进式的数据加载
你的所有数据,需要同时出现在内存里吗?
或许,你可以用代码或库,随时把需要的数据做流式处理或渐进式加载,导入内存里训练模型。
这可能需要算法使用优化技术迭代学习,比如使用随机梯度下降。那些需要内存里有所有数据、以进行矩阵运算的算法,比如某些对线性回归和逻辑回归的实现,就不适用了。
比如,Keras 深度学习 API 就提供了渐进式加载图像文件的功能,名为 flow_from_directory
另一个例子式 Pandas 库,可批量载入大型 CSV 文件。
6. 使用关系数据库(Relational database)
关系数据库为存储、访问大型数据集提供了标准化的方法。
在内部,数据存在硬盘中,能渐进式地 in batch 批量加载,并使用标准检索语言 SQL 检索。
像 MySQL、Postgres 这样的开源数据库工具,支持绝大多数的(全部?)编程语言。许多机器学习工具,都能直接与关系数据库连通。你也可以用
SQLite 这样更轻量的方法。
我发现,这种方法对大型表格式数据集非常有效率。
雷锋网提醒,你需要用能迭代学习的算法。
7. 使用大数据平台
有的情况下,你可能必须要使用大数据平台,即为处理超大型数据集而开发的平台。它们能让你进行数据转换,并在其上开发机器学习算法。
两个很好的例子是 Hadoop 与机器学习库 Mahout,以及 Spark 与 MLLib 库。
我认为,这是用尽上述办法仍无法解决的情况下,才需要采用的最后手段。单纯是这为你的机器学习项目所带来的额外硬件、软件复杂情况,就会消耗许多精力。
即便如此,有的任务确实数据太过庞大,前面的选项都无法奏效。【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
热点关注头条头条聚焦
24H热文一周话题本月最赞
讲师:157553人学习过
讲师:297250人学习过
讲师:43219人学习过
CTO专属活动
精选博文论坛热帖下载排行
《系统分析师考试辅导(2007版)》内容涵盖了最新的系统分析师考试大纲信息系统综合知识的所有知识点,分析了近3年信息系统分析与设计案例...
订阅51CTO邮刊纠纷处理 (9:00-18:00)
图书审核 (9:00-18:00)
抱歉,您要找的页面不存在。数据太大爆内存怎么办?七条解决思路 | 机器学习开发手册|内存|数据|算法_新浪科技_新浪网
& 滚动新闻 &&正文
数据太大爆内存怎么办?七条解决思路 | 机器学习开发手册
雷锋网(公众号:雷锋网)按:本文作者 Jason Brownlee 为澳大利亚知名机器学习专家、教育者,对时间序列预测尤有心得。原文发布于其博客。雷锋网编译。Jason Brownlee 在研究、应用机器学习算法的经历中,相信大伙儿经常遇到数据集太大、内存不够用的情况。这引出一系列问题:怎么加载十几、几十 GB 的数据文件?运行数据集的时候算法崩溃了,怎么办?怎么处理内存不足导致的错误?本文将讨论一些常用的解决办法,供大家参考。处理大型 ML 数据文件的七种思路1. 分配更多内存有的机器学习工具/库有默认内存设置,比如 Weka。这便是一个限制因素。你需要检查一下:是否能重新设置该工具/库,分配更多内存。对于 Weka,你可以在打开应用时,把内存当作一个参数进行调整。2. 用更小的样本你真的需要用到全部数据吗?可以采集一个数据的随机样本,比如前 1,000 或 100,000 行。在全部数据上训练最终模型之前(使用渐进式的数据加载技巧),先试着用这个小样本解决问题。总的来说,对算法做快速地抽查、看到结果在前后的变化,在机器学习领域是一个很好的习惯。你还可以考虑:相对于模型技巧,做一个数据大小的敏感性分析。或许,对于你的随机小样本,有一个天然的边际效应递减分水岭。越过这个关口,继续增加的数据规模带来的好处微乎其微。3. 更多内存你必须要用 PC 吗?你可以考虑内存、性能高一个量级的计算设备。比如,租用 AWS 这样的云服务。租用云端有数十 GB 内存的机器,最低价格每小时不到一美元。我个人觉得这是非常实际的选择。4. 转换数据格式你是否把数据存为原始的 ASCII 文本,比如 CSV 文件?或许,使用其它格式能加速数据载入并且降低内存占用。好的选择包括像 GRIB、NetCDF、HDF 这样的二进制格式。有很多命令行工具能帮你转换数据格式,而且不需要把整个数据集载入内存里。换一种格式,可能帮助你以更紧凑的形式存储数据,节省内存空间;比如 2-byte 整数,或者 4-byte 浮点。5. 流式处理数据,或渐进式的数据加载你的所有数据,需要同时出现在内存里吗?或许,你可以用代码或库,随时把需要的数据做流式处理或渐进式加载,导入内存里训练模型。这可能需要算法使用优化技术迭代学习,比如使用随机梯度下降。那些需要内存里有所有数据、以进行矩阵运算的算法,比如某些对线性回归和逻辑回归的实现,就不适用了。比如,Keras 深度学习 API 就提供了渐进式加载图像文件的功能,名为 flow_from_directory另一个例子式 Pandas 库,可批量载入大型 CSV 文件。6. 使用关系数据库(Relational database)关系数据库为存储、访问大型数据集提供了标准化的方法。在内部,数据存在硬盘中,能渐进式地 in batch 批量加载,并使用标准检索语言 SQL 检索。像 MySQL、Postgres 这样的开源数据库工具,支持绝大多数的(全部?)编程语言。许多机器学习工具,都能直接与关系数据库连通。你也可以用 SQLite 这样更轻量的方法。我发现,这种方法对大型表格式数据集非常有效率。雷锋网提醒,你需要用能迭代学习的算法。7. 使用大数据平台有的情况下,你可能必须要使用大数据平台,即为处理超大型数据集而开发的平台。它们能让你进行数据转换,并在其上开发机器学习算法。两个很好的例子是 Hadoop 与机器学习库 Mahout,以及 Spark 与 MLLib 库。我认为,这是用尽上述办法仍无法解决的情况下,才需要采用的最后手段。单纯是这为你的机器学习项目所带来的额外硬件、软件复杂情况,就会消耗许多精力。即便如此,有的任务确实数据太过庞大,前面的选项都无法奏效。
现在我们正一步步朝着这个方向前进,一些“简单粗暴”的工作正在...
造假“文明”也不可阻挡地蔓延至互联网浪潮,不过随着黑色交易的...
早在光圈直播倒下之后,关于直播死亡潮的说法就一直甚嚣尘上。您正在使用IE低版浏览器,为了您的雷锋网账号安全和更好的产品体验,强烈建议使用更快更安全的浏览器
发私信给三川
导语:使用大数据平台只是不得不为之的最后手段。
同步到新浪微博
用爱救世界
当月热门文章
为了您的账户安全,请
您的邮箱还未验证,完成可获20积分哟!
您的账号已经绑定,现在您可以以方便用邮箱登录
请填写申请人资料

我要回帖

更多关于 keras gpu内存不足 的文章

 

随机推荐