如何在没有高级模型功能的情况下使用keras层进行训练和预测

时间:2018-11-19 06:41:53

标签: python tensorflow keras

在我的Tensorflow代码中,我想使用Keras层(例如Dense,Dropout和BatchNormalization)来组成我的网络,因为我不想自己编写这些层,但我不想依赖稀疏记录的high魔术级别的Keras模型功能,例如Model.fit()。我想获得损失函数,获得训练结果并自我应用反向传播变量,主要是因为我想清楚地了解网络正在做什么,并能够以Keras不提供的方式自定义训练。 / p>

如果我只有层在训练和验证/测试/推论中表现相同,那么我可以使用方法1 here来建立模型,并用输入张量调用它以获得预测张量并使用它进行反向传播所需的一切,并将其称为一天。

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

  • 对于辍学,在获得预测时区分训练和非训练,仅在训练期间应用辍学。
  • 对于BatchNormalization,在每个训练步骤之前,更新batchnorm统计信息。

当涉及Dropout和BatchNormalization时,如何使用模型“困难的方式”进行训练和预测?我没有找到任何有用的示例,并且没有高级解释,我唯一能做的就是深入Keras代码并跟踪所有重载的鸭子类型函数。更确切地说,我什至不需要Keras Model。我只需要一种构成网络的Keras层的方法,就可以用它来进行预测和训练。

0 个答案:

没有答案