如何通过Keras的model.fit_generator高效训练模型并节省内存?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1921个文字,预计阅读时间需要8分钟。
前段时期在训练模型的时候,发现当前训练集的数量过多,并且输入的图片维度过大,很容易超出内存限制。简单例子,如果我们有20000个样本,输入图片的维度是224x224x3,那么就很容易超内存了。
前言
前段时间在训练模型的时候,发现当训练集的数量过大,并且输入的图片维度过大时,很容易就超内存了,举个简单例子,如果我们有20000个样本,输入图片的维度是224x224x3,用float32存储,那么如果我们一次性将全部数据载入内存的话,总共就需要20000x224x224x3x32bit/8=11.2GB 这么大的内存,所以如果一次性要加载全部数据集的话是需要很大内存的。
如果我们直接用keras的fit函数来训练模型的话,是需要传入全部训练数据,但是好在提供了fit_generator,可以分批次的读取数据,节省了我们的内存,我们唯一要做的就是实现一个生成器(generator)。
本文共计1921个文字,预计阅读时间需要8分钟。
前段时期在训练模型的时候,发现当前训练集的数量过多,并且输入的图片维度过大,很容易超出内存限制。简单例子,如果我们有20000个样本,输入图片的维度是224x224x3,那么就很容易超内存了。
前言
前段时间在训练模型的时候,发现当训练集的数量过大,并且输入的图片维度过大时,很容易就超内存了,举个简单例子,如果我们有20000个样本,输入图片的维度是224x224x3,用float32存储,那么如果我们一次性将全部数据载入内存的话,总共就需要20000x224x224x3x32bit/8=11.2GB 这么大的内存,所以如果一次性要加载全部数据集的话是需要很大内存的。
如果我们直接用keras的fit函数来训练模型的话,是需要传入全部训练数据,但是好在提供了fit_generator,可以分批次的读取数据,节省了我们的内存,我们唯一要做的就是实现一个生成器(generator)。

