Keras在其模型中使用了fit_generator()方法.它接受python生成器或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.这是一个更多的工作,但如果你要进行多线程处理,他们建议使用它.