在keras中model.fit_generator()和model.fit()的区别说明
在keras中,model.fit_generator()和model.fit()是用于训练模型的两个常用函数。这两个函数之间存在着很多的区别。
一、数据读取格式不同:
model.fit()需要将训练集预处理成一个Numpy array,然后将其塞进内存中,这相比逐个batch读取会非常消耗内存。而对于model.fit_generator()来说,可以通过生成器一个一个地读取数据,因而可以避免大量的内存使用。
二、数据读取的位置不同:
model.fit()读取的是放在内存里的数据,而model.fit_generator()读取的是放在磁盘上或内存里的数据。model.fit_generator()仅读取一个batch的数据,处理完成后再读取下一个batch。
三、适用范围不同:
model.fit()适用于小型的数据集,而model.fit_generator()适用于较大型的数据集,如使用ImageDataGenerator从文件夹中生成数据训练模型时。
四、可以进行数据增强
由于 model.fit_generator 能让我们使用大量的数据集,也就可以更加充分的扩大数据的数量,进而扩大模型的泛华能力,所以更常用于数据量较大时,并在数据加载的同时,对数据进行扩充,生成更多的样本数据,并将这些数据作为训练数据,是模型达到更好效果的重要方法。
总体而言,model.fit()适合小系统出来的数据集,model.fit_generator()适合于数据量很大而且不可能一次性加载进内存中的数据集。