我想构建2个解码器副本,其中包含具有不同droout的相同FC层,但我希望它们共享权重。如何才能做到这一点?

时间:2019-06-13 21:02:04

标签: tensorflow keras

我想构建2个具有不同辍学模型的解码器副本,但是这些层应该共享权重,如何用keras做到这一点?

我知道如何与keras API(https://keras.io/getting-started/functional-api-guide/#shared-layers)共享一个图层,但是我想要2组图层,因为我想保留不同的辍学对象,但是它们应该具有相同的权重。

我想实现这种架构。

       Conv
       Pool
droupout1 droupout2
  FC1       FC2
softmax1  softmax2
        out

1 个答案:

答案 0 :(得分:1)

通过Keras Functional 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可以是任何功能合并功能,例如串联或平均值。