博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
keras的训练引擎:train_array.py和train_generator.py
阅读量:6327 次
发布时间:2019-06-22

本文共 903 字,大约阅读时间需要 3 分钟。

keras的Model支持两种模式的训练:

  • 直接传入数组,最终会调用train_array.py中的fit_loop()函数
  • 直接传入生成器,最终会调用train_generator.py中的fit_generator()函数

train_array.py文件只有三个函数,就是fit_loop()、predict_loop()、evaluate_loop()

train_generator.py文件只有三个函数,就是fit_generator()函数、predict_generator()、evaluate_generator()

这两个函数非常相似,参数也都差不多。它们都接受一个model参数,它的类型是一个Model实例。因为这两个函数比较重量级,所以从Model中拆分出来单独作为一个文件,这两个文件可以说是keras的心脏。这两个文件把模型、损失、评测指标、回调等组件结合起来,仿佛各条小溪在此处汇聚成大河,仿佛各个乐器在此处齐鸣奏出交响乐。只要看懂这两个文件,keras可以说是懂了半壁江山。以这两个文件为出发点,顺藤摸瓜按图索骥就能够把keras的各个模块、各个部件理得很清。

fit_loop()有steps_per_epoch和batch_size两个参数,但是这两个参数不能同时指定。因为fit_loop传入了全部数据,所以样本总数是确定的。steps_per_epoch*batch_size应该近似等于样本总数。也就是说steps_per_epoch和batch_size这两个变量在样本总数已知的情况下可以互相推出。

fit_loop()函数适用场景包括:

  • 样本数可以全部加载到内存
  • 样本长度统一且固定

fit_generator()相比fit_loop()要灵活很多,但是用起来却需要额外的步骤。它需要提供一个生成器,这个生成器应该是一个无穷无尽的生成器,也就是说它应该始终源源不断地产生数据,通过steps_per_epoch来指明每个轮次包含的样本数。对于生成器每次返回数据,样本个数即为batch_size。生成器每次返回的数据batch_size是可以参差不齐的。

转载地址:http://clgaa.baihongyu.com/

你可能感兴趣的文章
ThinkPHP与EasyUI整合之三(searchbox):在datagrid中查询指定记录
查看>>
知识片段---设计模式
查看>>
UIAlertController简单使用
查看>>
二分查找中的对半查找和采用斐波那契法查找的效率分析(信息论描述)
查看>>
我对git的认识
查看>>
BZOJ2425:[HAOI2010]计数(数位DP)
查看>>
CLR读书笔记--第四章 类型基础
查看>>
CSS3实战开发 表单发光特效实战开发
查看>>
初识Ajax---简单的Ajax应用实例
查看>>
js 去除字符串空白符
查看>>
201521123026《JAVA程序设计》第13周学习总结
查看>>
【SICP练习】82 练习2.54
查看>>
[APUE]标准IO库(下)
查看>>
iOS - OC - 打印信息 - xcode 中文打印
查看>>
HDU - 4810 - Wall Painting (位运算 + 数学)
查看>>
05LaTeX学习系列之---TeX的命令行操作
查看>>
响应式设计中的响应式图片制作
查看>>
RequireJS使用小结1——for Effective JavaScript Module Loading
查看>>
【转载】NULL,"",String.Empty三者在C#中的区别
查看>>
05-使用jQuery操作input的value值
查看>>