首页 > 解决方案 > 如何在没有高级模型功能的情况下使用 keras 层进行训练和预测

问题描述

在我的 Tensorflow 代码中,我想使用 Keras 层(如 Dense、Dropout 和 BatchNormalization)来组成我的网络,因为我不想自己编写这些层,但我不想依赖于高级 Keras 的稀疏记录的魔法模型函数,如 Model.fit()。我想获得损失函数,获得训练操作并自己应用反向传播变量更新,主要是因为我想明确了解网络在做什么,并能够以 Keras 不提供的方式自定义训练。

如果我只有在训练和验证/测试/推理期间行为相同的层,那么我可以在这里使用方法 1来制作模型,用输入张量调用它来获取预测张量并用它做任何我需要的事情用于反向传播并收工。

但是,对于 Dropout 和 BatchNormalization 等特殊层,我还需要执行以下操作:

当涉及到 Dropout 和 BatchNormalization 时,如何使用“艰难的方式”模型进行训练和预测?我无法找到任何有用的示例,并且没有高级解释,我唯一能做的就是深入研究 Keras 代码并跟踪各种重载的鸭子类型函数。更准确地说,我什至不需要 Keras 模型本身。我只需要一种方法来为用于进行预测和训练的网络组合 Keras 层。

标签: pythontensorflowkeras

解决方案


推荐阅读