【问题标题】:How to manage memory while feeding a model如何在喂食模型时管理内存
【发布时间】:2019-03-24 00:07:02
【问题描述】:

我正在使用带有 tensorflow 后端的 Keras 来解决图像分类问题。我最初采用了一种天真的方法,将文件中的所有图像加载到我传递给 Keras fit() 函数的数组中。只要我使用图像的缩略图,这就会起作用,但我最近决定使用全尺寸图像。

当我得到以下错误时,我刚尝试这个:

2018-10-18 20:39:14.486023: W tensorflow/core/common_runtime/bfc_allocator.cc:275] 分配器 (mklcpu) 试图分配 63.50GiB 时内存不足。当前分配摘要如下。 2018-10-18 20:39:14.490332: I tensorflow/core/common_runtime/bfc_allocator.cc:630] Bin (256): Total Chunks: 24, Chunks in use: 22. 6.0KiB 分配给块。 5.5KiB 在 bin 中使用。 2.8KiB 客户端请求在 bin 中使用。

这当然不足为奇,因为每张图片超过 1 MB,而我有大约 5000 张。问题是如何处理。

一种可能的幼稚解决方案是简单地加载少量图像,并反复调用 fit () 函数,一次大约 10 张图像。我想知道的是,Keras 和 Tensorflow 是否可以为这个问题提供更好、更优雅的解决方案。我基本上在考虑一个回调类型的函数,它会在每次加载批处理时执行,在该函数中,我会手动将文件读入位图中以馈送到优化器中。

我不需要详细的答案 - 如果有人能以一般方式向我指出文档的正确区域,我将不胜感激。

【问题讨论】:

  • 这个问题之前已经问过很多次了,解决方法是构建一个一次只加载一批图像的生成器函数,并使用 fit_generator 以便 keras 在训练期间调用它。

标签: tensorflow keras


【解决方案1】:

https://keras.io/preprocessing/image/

此页面包含您需要的几乎所有信息。我建议阅读所有内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 2017-03-21
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    相关资源
    最近更新 更多