python - 如何在没有高级模型功能的情况下使用 keras 层进行训练和预测
问题描述
在我的 Tensorflow 代码中,我想使用 Keras 层(如 Dense、Dropout 和 BatchNormalization)来组成我的网络,因为我不想自己编写这些层,但我不想依赖于高级 Keras 的稀疏记录的魔法模型函数,如 Model.fit()。我想获得损失函数,获得训练操作并自己应用反向传播变量更新,主要是因为我想明确了解网络在做什么,并能够以 Keras 不提供的方式自定义训练。
如果我只有在训练和验证/测试/推理期间行为相同的层,那么我可以在这里使用方法 1来制作模型,用输入张量调用它来获取预测张量并用它做任何我需要的事情用于反向传播并收工。
但是,对于 Dropout 和 BatchNormalization 等特殊层,我还需要执行以下操作:
- 对于 Dropout,在得到预测时区分训练和非训练,只在训练期间应用 dropout。
- 对于 BatchNormalization,在每个训练步骤之前,更新 batchnorm 统计信息。
当涉及到 Dropout 和 BatchNormalization 时,如何使用“艰难的方式”模型进行训练和预测?我无法找到任何有用的示例,并且没有高级解释,我唯一能做的就是深入研究 Keras 代码并跟踪各种重载的鸭子类型函数。更准确地说,我什至不需要 Keras 模型本身。我只需要一种方法来为用于进行预测和训练的网络组合 Keras 层。
解决方案
推荐阅读
- javascript - 如何使用 moment.js 添加天数,不包括周末?
- swift - 带有 switch swift 的通用枚举
- css - CSS创建三角形边到边
- java - 有关 NetBeans 和 JDK 10.0.2 的问题
- java - 不再可能向 mysql 数据库添加新值?
- ssl - 将 SSL 证书绑定到站点时 - 错误“系统找不到指定的文件。(来自 HRESULT 的异常:0x80070002)
- wpf - WPF 两个面板应用程序 - 重用或创建面板 VM 的新实例?
- python - 使用 uWSGI 代理某些请求
- python - 使用 Azure Python SDK 打印资源组中的 VM 列表
- python - Pyspark rdd 操作!(Python3、Spark2)