我试图建立一个简单的CNN模型用于二进制分类,但训练数据集包含超过100k的'.png'文件。如果我通过一次加载所有数据来训练模型,它将创建MemoryExhaustion Error。有人能帮我建立网络来处理如此庞大的数据集吗?
可以使用yield
语句进行流处理
def load_at_once(image_names):
return [load(image_name) for image_name in image_names] # memory exhaust
def load_stream(image_names):
for image_name in image_names:
yield load(image_name)
可以使用for
语句迭代图像。load_stream
函数将逐个加载图像,如果您不尝试将所有图像保存在内存中,则可以防止内存耗尽。
当然,当你多次使用图像时,流式传输比将所有内容加载到内存中要慢,因为每次你想使用图像时它都会读取图像。