基于keras中训练数据的几种方式对比(fit和fit_generator)

 更新时间:2021年05月17日 11:23:54   作者:光彩照人  
这篇文章主要介绍了keras中训练数据的几种方式对比(fit和fit_generator),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

一、train_on_batch

model.train_on_batch(batchX, batchY)

train_on_batch函数接受单批数据,执行反向传播,然后更新模型参数,该批数据的大小可以是任意的,即,它不需要提供明确的批量大小,属于精细化控制训练模型,大部分情况下我们不需要这么精细,99%情况下使用fit_generator训练方式即可,下面会介绍。

二、fit

model.fit(x_train, y_train, batch_size=32, epochs=10)

fit的方式是一次把训练数据全部加载到内存中,然后每次批处理batch_size个数据来更新模型参数,epochs就不用多介绍了。这种训练方式只适合训练数据量比较小的情况下使用。

三、fit_generator

利用Python的生成器,逐个生成数据的batch并进行训练,不占用大量内存,同时生成器与模型将并行执行以提高效率。例如,该函数允许我们在CPU上进行实时的数据提升,同时在GPU上进行模型训练

接口如下:

fit_generator(self, generator, steps_per_epoch, epochs=1, verbose=1, callbacks=None, validation_data=None, validation_steps=None, class_weight=None, max_q_size=10, workers=1, pickle_safe=False, initial_epoch=0)

generator:生成器函数

steps_per_epoch:整数,当生成器返回steps_per_epoch次数据时,计一个epoch结束,执行下一个epoch。也就是一个epoch下执行多少次batch_size。

epochs:整数,控制数据迭代的轮数,到了就结束训练。

callbacks=None, list,list中的元素为keras.callbacks.Callback对象,在训练过程中会调用list中的回调函数

举例:

def generate_arrays_from_file(path):
            while True:
                with open(path) as f:
                    for line in f:
                        # create numpy arrays of input data
                        # and labels, from each line in the file
                        x1, x2, y = process_line(line)
                        yield ({'input_1': x1, 'input_2': x2}, {'output': y})
 
model.fit_generator(generate_arrays_from_file('./my_folder'),
                            steps_per_epoch=10000, epochs=10)

补充:keras.fit_generator()属性及取值

如下所示:

fit_generator(self, generator, 
                    steps_per_epoch=None, 
                    epochs=1, 
                    verbose=1, 
                    callbacks=None, 
                    validation_data=None, 
                    validation_steps=None,  
                    class_weight=None,
                    max_queue_size=10,   
                    workers=1, 
                    use_multiprocessing=False, 
                    shuffle=True, 
                    initial_epoch=0)

通过Python generator产生一批批的数据用于训练模型。generator可以和模型并行运行,例如,可以使用CPU生成批数据同时在GPU上训练模型。

参数:

generator:一个generator或Sequence实例,为了避免在使用multiprocessing时直接复制数据。

steps_per_epoch:从generator产生的步骤的总数(样本批次总数)。通常情况下,应该等于数据集的样本数量除以批量的大小。

epochs:整数,在数据集上迭代的总数。

works:在使用基于进程的线程时,最多需要启动的进程数量。

use_multiprocessing:布尔值。当为True时,使用基于基于过程的线程。

例如:

datagen = ImageDataGenator(...)
model.fit_generator(datagen.flow(x_train, y_train,
                                 batch_size=batch_size),
                    epochs=epochs,
                    validation_data=(x_test, y_test),
                    workers=4)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python使用matplotlib画柱状图、散点图

    python使用matplotlib画柱状图、散点图

    这篇文章主要为大家详细介绍了python使用matplotlib画柱状图、散点图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • 详解Python字符串原理与使用的深度总结

    详解Python字符串原理与使用的深度总结

    本文将学习字符串数据类型相关知识,将讨论如何声明字符串数据类型,字符串数据类型与 ASCII 表的关系,字符串数据类型的属性,以及一些重要的字符串方法和操作,超级干货,不容错过
    2022-05-05
  • TensorFlow 合并/连接数组的方法

    TensorFlow 合并/连接数组的方法

    今天小编就为大家分享一篇TensorFlow 合并/连接数组的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python DataFrame中loc与iloc取数据的基本方法实例

    python DataFrame中loc与iloc取数据的基本方法实例

    这篇文章主要给大家介绍了关于python DataFrame中loc与iloc取数据的基本方法,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-02-02
  • Python3列表内置方法大全及示例代码小结

    Python3列表内置方法大全及示例代码小结

    这篇文章主要介绍了Python3列表内置方法大全及示例代码小结,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • Python功能点实现:函数级/代码块级计时器

    Python功能点实现:函数级/代码块级计时器

    今天小编就为大家分享一篇关于Python功能点实现:函数级/代码块级计时器,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Python3中类、模块、错误与异常、文件的简易教程

    Python3中类、模块、错误与异常、文件的简易教程

    这篇文章主要给大家介绍了关于Python3中类、模块、错误与异常、文件的相关教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11
  • python神经网络MobileNetV3 large模型的复现详解

    python神经网络MobileNetV3 large模型的复现详解

    这篇文章主要为大家介绍了python神经网络MobileNetV3 large模型的复现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 浅谈python函数之作用域(python3.5)

    浅谈python函数之作用域(python3.5)

    下面小编就为大家带来一篇浅谈python函数之作用域(python3.5)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • python利用appium实现手机APP自动化的示例

    python利用appium实现手机APP自动化的示例

    这篇文章主要介绍了python利用appium实现手机APP自动化的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论