【问题标题】:Fetch weights of the previous layer获取上一层的权重
【发布时间】:2017-05-21 10:34:59
【问题描述】:
是否可以获取上一层的权重,修改它们并再次设置到下一层。我想在网络中引入一个自定义层,它将修改权重(根据所需的逻辑),然后将修改后的权重值设置为下一层。如下图所示:
我不确定这是否可能。我知道我们可以转储快照,然后使用它来设置新的权重。我还可以使用快照转换权重。但是,我不知道如何在网络本身内执行此操作(无需拍摄或使用任何快照)。
谢谢
KK
【问题讨论】:
标签:
python
deep-learning
keras
keras-layer
【解决方案1】:
tl;dr:加载一个模型(无需编译)并使用您想要初始化模型的权重。为要更改的图层创建新的权重。
完整版:
根据this thread 和 fchollet 自己的解释,执行此操作的规范方法是将权重加载到以前的 Keras 模型中(您不需要编译它,所以它是即时的)并将该模型用作用于访问权重的可查询数据结构。
对于顺序模型,您可以这样做:
weights = model.layers[5].get_weights()
model.layers[5].set_weights(weights)
另请参阅:another discussion 使用 fchollet 讨论此主题。