python - 共享层,不同模型
问题描述
我有两个共享一些层的 Keras 模型(功能 API)。我想知道我是否训练第一个模型,第二个模型是否会自动更新其共享层的权重,或者我应该手动加载权重。
我从文档中知道可以在同一模型中共享层,但我对这种特殊情况没有任何线索。
我还想知道具有共享层的 Keras 模型是共享相同的计算图还是具有独立的计算图。
解决方案
当您训练第一个模型时,来自共享层的权重将在每个其他模型中自动更新。考虑以下示例:
x = Input(shape=(input_dim,))
encoder = Dense(output_dim)(x)
decoder = Dense(input_dim)(encoder)
autoencoder = Model(input=x, output=decoder)
supervised = Model(input=x, output=encoder)
autoencoder.compile(...)
supervised.compile(...)
在这里,当你训练 时supervised
,来自 layer 的权重encoder
会同时更新supervised
和autoencoder
。换句话说,来自的权重encoder
完全属于这一层,它们不依赖于使用这一层的模型。
对于第二个问题,答案是 Keras 仅使用一个计算图(即使模型不共享层)。
推荐阅读
- python - 什么是两个并行映射和映射到值差异的元组
- realm - 缺少领域构造函数
- c++ - 自动为 Qt 配置套件
- node.js - 为 PostgreSQL 创建 Node.js 服务:一个 json-patch 运行器
- c++ - 我怎样才能使它更有效率?我正在尝试重构我的程序,有什么方法可以使它更有效?
- c# - Docusign:请求的权限不正确
- javascript - 如何保存 webpack-dev-server 更改?
- javascript - 如何使用 React 中的参数访问过滤器内的道具
- sql - ORA-40478-即使返回 clob 时输出值也太大(最大值:4000)
- javascript - 为什么在另一个函数中使用时会出现“未捕获的 TypeError:regex.test 不是函数”?