1
我想知道keras中的fit_generator()
在使用通常的fit()
方法与发生器产量相同的batch_size
方面在内存使用方面是否有优势。我见过类似这样的一些例子:keras中fit_generator()的优势
def generator():
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# some data prep
...
while 1:
for i in range(1875): # 1875 * 32 = 60000 -> # of training samples
yield X_train[i*32:(i+1)*32], y_train[i*32:(i+1)*32]
如果我通过这个入fit_generator()
方法或者直接传递所有数据到fit()
方法和定义32的batch_size
,这将使有关任何区别( GPU?) - 任何内存?
但在GPU上,内存使用情况仍然相同,是否正确?它总是必须使用fit()和fit_generator()将完整的batch_size加载到GPU内存中? – V1nc3nt
是的,你是正确的。我认为如果你必须引入增强和使用keras ImageDataGenerator作为发生器,它提供了许多功能,如旋转,缩放,剪切等,这将从现有的训练数据创建一个新的图像,而不会是可以预先获得,并且这种额外的处理可以并行处理。看看https://keras.io/preprocessing/image/ ImageDataGenerator –
感谢您的帮助。我希望有一种方法可以让我只将一批的部分内容加载到模型中,以节省GPU内存。但似乎你总是必须至少提供完整批次。例如。如果我的batch_size为10,我希望有一种方法,在backprop完成之前,只提供5个样本,然后另外提供5个样本。也许有一些限制,为什么这不起作用。 – V1nc3nt