zoukankan      html  css  js  c++  java
  • keras callback中的stop_training

    keras这个框架简洁优美,设计上堪称典范。而tensorflow就显得臃肿庞杂,混乱不清。当然,keras的周边部件比如callbacks、datasets、preprocessing有许多过度设计的感觉,但是keras的核心是好的,这个设计完美的核心使得这个系统可扩展性极强、代码逻辑性极强。然而,其中因为依旧有一些小细节,一旦理解不透,就会对keras的原理有“神奇”之感,比如本文接下来要讲的这个问题:callbacks中的stop_training。

    keras的Model#fit()函数接受一个callback列表,在训练的不同阶段会触发callback的不同操作。其中这些阶段包括:

    • 训练开始和结束
    • 批次开始和结束
    • 轮次开始和结束

    callback列表中的元素都是Callback的派生类的实例。每个Callback派生类都可以选择性的重写以上六个函数。

    其中callback中常用的一种操作是:callback_model.stop_training=True or False

    callback_model是每个Callback实例的成员变量,它对应的类型也就是Model。

    但是Model并没有stop_training这个成员变量,Model继承自Network,Network也没有这个成员变量。stop_training这个属性唯一出现的两个地方就是:callbacks.py中定义回调接口的时候,train_array.py执行训练操作的时候。

    这个属性仿佛从天而降、无中生有。

    实际上,Model的父类Network实现了__setattr__函数,这样就可以随意往Network上“悬挂”变量了,Model当然也继承了这样的特点。

  • 相关阅读:
    JVM学习记录-垃圾收集器
    JVM学习记录-垃圾回收算法
    Java设计模式学习记录-策略模式
    【转】Java方向如何准备技术面试答案(汇总版)
    Java设计模式学习记录-代理模式
    JVM之ParNew收集器
    JVM之CMS收集器
    动态代理:cgib、jdk、java javassist
    JVM之Class文件结构
    JAVA之直接内存(DirectMemory)
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/9874195.html
Copyright © 2011-2022 走看看