Keras 的批量规范化层已损坏

更新:不幸的是,我向 Keras 发出的改变批量规范化层行为的 Pull 请求未被接受。您可以在此处阅读详细信息。对于那些敢于尝试自定义实现的人,您可以在我的分支中找到代码。我可能会维护它并将其与最新的 […] 合并

来源:DatumBox - 机器学习、统计和软件开发博客

更新:不幸的是,我向 Keras 提出的更改批量规范化层行为的 Pull 请求未被接受。您可以在此处阅读详细信息。对于那些敢于摆弄自定义实现的人,您可以在我的分支中找到代码。只要我使用它,我可能会维护它并将其与 Keras 的最新稳定版本(2.1.6、2.2.2 和 2.2.4)合并,但我不保证。

更新:不幸的是,我向 Keras 提出的更改批量规范化层行为的 Pull 请求未被接受。您可以在此处阅读详细信息。对于那些敢于摆弄自定义实现的人,您可以在我的分支中找到代码。只要我使用它,我可能会维护它并将其与 Keras 的最新稳定版本(2.1.6、2.2.2 和 2.2.4)合并,但我不保证。 这里 我的分支 2.1.6 2.2.2 2.2.4

大多数从事深度学习的人都使用过或听说过 Keras。对于那些还没有使用过的人来说,这是一个很棒的库,它抽象了底层深度学习框架,如 TensorFlow、Theano 和 CNTK,并提供了用于训练 ANN 的高级 API。它易于使用,支持快速原型设计,并拥有一个友好活跃的社区。我一直在大量使用它,并定期为该项目做出贡献,我绝对会向任何想要从事深度学习的人推荐它。

Keras 高级 API

尽管 Keras 让我的生活变得更轻松,但很多次我都被批量规范化层的奇怪行为所困扰。它的默认行为随着时间的推移而发生了变化,尽管如此,它仍然给许多用户带来了问题,因此 Github 上有几个相关的未解决的问题。在这篇博文中,我将尝试构建一个案例来解释为什么 Keras 的 BatchNormalization 层不能很好地与迁移学习配合使用,我将提供修复该问题的代码,并将给出补丁结果的示例。

未解决的问题 补丁

1. 简介

1.1 使用迁移学习对于深度学习至关重要

文档 补丁 新的 PR