Machine learning keras中fit_generator()的优势

Machine learning keras中fit_generator()的优势,machine-learning,neural-network,generator,keras,model-fitting,Machine Learning,Neural Network,Generator,Keras,Model Fitting,我想知道keras中的fit_generator()在内存使用方面是否比使用通常的fit()方法具有任何优势,该方法具有与生成器相同的batch_size。我见过一些类似的例子: 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

我想知道keras中的
fit_generator()
在内存使用方面是否比使用通常的
fit()
方法具有任何优势,该方法具有与生成器相同的
batch_size
。我见过一些类似的例子:

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()
方法中,并定义一个
batch_size
为32的大小,它会对(GPU?)内存产生任何影响吗?

是的,当您需要增强数据以获得更好的模型精度时,这种差异实际上会产生


为了提高效率,它允许使用CPU对图像进行实时数据扩充。这意味着它可以使用GPU进行模型训练和更新,同时将增强图像的负载委托给CPU,并提供批量训练。

但在GPU上,内存使用情况仍然相同,对吗?它总是必须使用fit()和fit_生成器()将完整的批处理_大小加载到GPU内存中?是的,你是对的。我认为如果你必须引入增强,并使用keras ImageDataGenerator作为生成器,它提供许多功能,如旋转、缩放、,剪切等,它将根据现有的训练数据创建一个新的图像,并且在前期不可用,可以并行处理此附加处理。查看ImageDataGeneratorTanks以获取帮助。我希望有一种方法,允许我只加载一批的一部分到模型中,以节省GPU内存。但看起来你至少要提供整批货。例如,如果我的批次尺寸为10,我希望在完成backprop之前,只提供5个样本,然后分别提供5个样本。也许有一些限制,为什么这不能工作。