Keras 下的自定义组件
导言
首先分享一下最近看的两本书:
- 《Deep Learning with Python》
- 《Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow》
两本书都到第三版了,阅读时请认准英文原版。
其中第一本书 DLWP 我已经基本读完,第二本 HOML 正在阅读。你可以理解为前者主要在讲 Keras,而后者可以深入到 TensorFlow。这样的阅读顺序我觉得挺好。
言归正传,这篇文章我想谈谈 Keras 的自定义组件,其主要思想来源于 HOML 的第 12 章。具体来讲,涵盖:
- 自定义 Initializer
- 自定义 Regularizer
- 自定义 Constraint
- 自定义 Activation Function
- 自定义 Loss
- 自定义 Metrics
- 自定义 Layer
- 自定义 Model
在这里面,有一些可以归纳出的点:
- 大多数情况下,可以只传递一个函数进去,Keras 会自动帮你处理这一切;
- 或者可以继承对应的类,每种组件都有其对应的类,一般要实现其
__call__或者call方法; - 在模型保存和加载的阶段,我们还要为每个组件实现
get_config方法; - Metrics、Layer、Model 这三者除了
call方法之外,还有其他的方法需要实现。
总之,这里面有许多东西需要处理和记忆,初看之下还会有些混乱。这篇文章就是在梳理这些内容。
由于篇幅有限,我只捡重要的讲。除了宣导之外,还能帮助我记忆。