python - 使用model.fit时如何将'training'参数传递给tf,keras.Model
问题描述
所以我有这个由子类化 API 编写的模型,调用签名看起来像 call(x, training),在执行 batchnorm 和 dropout 时需要训练参数来区分训练和非训练。当我使用 model.fit 时,如何让模型前向传递知道我处于训练模式或评估模式?
谢谢!
解决方案
实际上,在文档https://www.tensorflow.org/beta/guide/keras/custom_layers_and_models中,它说“某些层,特别是 BatchNormalization 层和 Dropout 层,在训练和推理期间具有不同的行为。对于这样的层,在调用方法中公开训练(布尔)参数是标准做法。
通过在调用中公开此参数,您可以启用内置的训练和评估循环(例如拟合)以在训练和推理中正确使用该层。”所以我认为训练参数是由 keras 自动传入的。我试图删除训练参数的默认值并且没有抛出任何错误,所以很可能是 keras 内置循环做了这件事。
推荐阅读
- asp.net - 如何在 DotNetCore 中使用“用户名”而不是“电子邮件”登录
- docker - 我在 docker-compose.yml 文件中遇到错误
- javascript - async await mongodb find 过滤器不起作用,我怎样才能使它起作用?
- django - Django过滤父级,其中所有子值都符合条件
- apache-camel - 如果 json 路径表达式为空或为空,.when().jsonpath(myClass.getJsonPathExpressions().get(),true) 不起作用
- node.js - 无法安装幽灵本地安装
- javascript - 如何将 VB.net 代码中定义的字符串变量的值传递到 CefSharp 浏览器并使用 Javascript 以它们的名称调用它们?
- python-3.x - Python交错两个列表
- asp.net-core - 我是否在我的代码中正确执行/处理 GDPR 隐私警报
- file - 用于 SVN 的 Oneliner 在未版本化的子文件夹中添加文件