tensorflow - 我想构建 2 个解码器副本,其中包含具有不同 droupout 的相同 FC 层,但我希望它们共享权重。如何才能做到这一点?
问题描述
我想构建具有不同 dropout 的模型的 2 个解码器副本,但这些层应该共享权重,如何使用 keras 来实现?
我知道如何与 keras API ( https://keras.io/getting-started/functional-api-guide/#shared-layers ) 共享一个图层,但我想要 2 组图层,因为我想保留不同的辍学但是他们应该有共同的权重。
我想实现这种架构。
Conv
Pool
droupout1 droupout2
FC1 FC2
softmax1 softmax2
out
解决方案
这很容易使用 Keras 功能 API,我假设您想在 FC1 和 FC2 之间共享权重:
pool_out = SomePoolingLayer()(input_tensor)
shared_fc = Dense(neurons, activation='softmax')
drop1 = Dropout(0.5)(pool_out)
drop2 = Droput(0.5)(pool_out)
fc1 = shared_fc(drop1)
fc2 = shared_fc(drop2)
out = somehow_merge()([fc1, fc2])
somehow_merge
可以是任何功能合并函数,如连接或平均。
推荐阅读
- reactjs - 列出文件夹中的文件并让用户使用 React 发送到服务器
- angular - 如何将数据添加到对象中
- c# - “可追踪行为。状态。” 不包含 NOT_FOUND 的定义
- c - net/core/filter.c 和 linux/bpf/verifier.c
- javascript - JavaScript 执行时间线
- laravel - 如何根据时间戳获取最新记录,但不能从 laravel 中的表中复制?
- opencv - 如何将图像作为python代码中使用的c++函数的输出返回>
- unity3d - 在 Unity 中为对象绘制纹理
- rest - baseUrl 和 callbackUrl 的区别
- haskell - 为什么我们需要 WalletApi 的 startWatching 函数?