gpt4 book ai didi

Keras:为大型数据集批量加载图像

转载 作者:行者123 更新时间:2023-12-04 00:25:29 25 4
gpt4 key购买 nike

由于我有 40GB 的图像数据集,因此在 keras 中一次只能在内存中加载一批。

如果数据集很小,我可以使用 ImageDataGenerator 来生成批处理,但由于数据集很大,我无法将所有图像加载到内存中。

keras 中是否有任何方法可以执行类似于以下 tensorflow 代码的操作:

path_queue = tf.train.string_input_producer(input_paths, shuffle= False)
paths, contents = reader.read(path_queue)
inputs = decode(contents)
input_batch = tf.train.batch([inputs], batch_size=2)

我正在使用这种方法来序列化 tensorflow 中的输入,但我不知道如何在 Keras 中实现此任务。

最佳答案

Keras有方法fit_generator()在它的模型中。它接受一个 python generator或 keras Sequence作为输入。

您可以像这样创建一个简单的生成器:

fileList = listOfFiles     

def imageLoader(files, batch_size):

L = len(files)

#this line is just to make the generator infinite, keras needs that
while True:

batch_start = 0
batch_end = batch_size

while batch_start < L:
limit = min(batch_end, L)
X = someMethodToLoadImages(files[batch_start:limit])
Y = someMethodToLoadTargets(files[batch_start:limit])

yield (X,Y) #a tuple with two numpy arrays with batch_size samples

batch_start += batch_size
batch_end += batch_size

并且适合这样:
model.fit_generator(imageLoader(fileList,batch_size),steps_per_epoch=..., epochs=..., ...)

通常,您传递给 steps_per_epoch您将从生成器中获取的批次数。

您也可以实现自己的 Keras Sequence .这需要更多的工作,但如果您要进行多线程处理,他们建议使用它。

关于Keras:为大型数据集批量加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47200146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com