【发布时间】: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