首页 > 解决方案 > 我想构建 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

标签: tensorflowkeras

解决方案


这很容易使用 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可以是任何功能合并函数,如连接或平均。


推荐阅读