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

Python 如何强制不同层的权重在Keras中相等?,python,tensorflow,keras,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=4

在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)

我希望这样,inputlayer和outputlayer的权重是并列的,hidden1和hidden4以及hidden2和hidden3也是一样。我意识到它们的维度是不同的,即输入层是(20,40),而输出层是(40,20),所以我需要一种方法来实例化这些层,以便它们的权重是绑定的,但也可以进行转置。我该怎么做?感谢

这对于函数式API来说非常简单,您只需执行以下操作:

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

您创建一个层实例,只需给它两个不同的输入。当您两次调用该层时,两个实例的权重相同。

您应该阅读文档的这一部分:Matias的答案解决了问题。但我想知道你为什么要这么做?使用多层网络的目的是学习不同层次的抽象/表示。通过固定层的权重,我认为它不会比单层更好。我之所以要这样做,是因为我正在构建一个模型,其中我希望输入层和输出层的权重绑定,而两个外部隐藏层的权重绑定。尺寸将不相同,但可能会互换。例如,输入层可能有输入dim=20和80个节点,其中输出层有输出dim=20和80个节点。在这种情况下,是否有可能限制他们的权重?我将编辑我的问题,以便更清楚地说明我想做什么。谢谢。我正在尝试制作一个有5层的模型。我希望输入层和输出层的权重绑定,而2个外部隐藏层的权重绑定。如何使用您给出的代码实现这一点?假设我要创建两层,其中一层中的权重是另一层中权重的转置。我怎么能这么做?