【发布时间】:2018-02-23 15:04:01
【问题描述】:
有没有办法在 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),所以我需要一种方法来实例化这些层,以便它们的权重被绑定但也被转置。我怎样才能做到这一点?谢谢
【问题讨论】:
-
Matias 的回答解决了这个问题。但想知道为什么你会想要这样做?使用多层网络的目的是学习不同级别的抽象/表示。通过固定层的权重,我认为它不会比单层更好。
-
我想这样做的原因是我正在构建一个模型,我希望输入和输出层的权重绑定,而 2 个外部隐藏层的权重绑定。尺寸不会相同,但可能会转置。例如,输入层可能有 input_dim = 20 和 80 个节点,而输出层有输出 dim=20 和 80 个节点。在这种情况下是否可以捆绑他们的权重?
-
我将编辑我的问题,以更清楚地说明我想做什么。
标签: python tensorflow keras