如何在Keras中强制不同层的权重相等?

时间:2018-02-23 15:04:01

标签: python tensorflow keras

在Keras的模型训练过程中,有没有办法强制不同层的权重相等? 更清楚的是,如果我有一个像5层这样的模型:

inputlayer = Dense(units=40, activation='relu', input_dim=20)
hidden1 = Dense(units=40, activation='relu')(inputlayer)
hidden2 = Dense(units=5,activation='relu')(hidden1)
hidden3 = Dense(units=40,activation='relu')(hidden2)
hidden4 = Dense(unites=40,activation='relu')(hidden3)
outputlayer = Dense(units=20,activation='relu')(hidden4)

我希望它能使输入层和输出层的权重绑定,对于hidden1和hidden4以及hidden2和hidden3都是相同的。我意识到它们的尺寸是不同的,即输入层是(20,40)而输出层是(40,20),所以我需要一种实例化层的方法,以便它们的权重相关但也可以转置。我怎样才能做到这一点?感谢

1 个答案:

答案 0 :(得分:2)

这对于功能API来说非常简单,您只需要这样做:

layer = Dense(units=40, activation='relu', name="one")
n1 = layer(someInput)
n2 = layer(someOtherInput)

你创建了一个图层实例,只给它两个不同的输入。当您调用图层两次时,两个实例都具有相同的权重。