是否可以获取前一层的权重,修改它们并再次设置为下一层。我想在网络中引入一个自定义层,它将修改权重(根据所需的逻辑),然后将修改后的权重值设置为下一层。类似于下图所示:
我不确定这是否可行。我知道我们可以转储快照然后用它来设置新的权重。我也可以使用快照转换权重。但是,我不知道如何在网络内执行此操作(不使用或使用任何快照)。
由于
KK
答案 0 :(得分:0)
tl; dr :加载一个模型(不编译)并使用您想要初始化模型的权重。为要更改的图层创建新权重。
完整版:
根据this thread和fchollet本人的解释,这样做的规范方法是将你的权重加载到之前的Keras模型中(你不需要编译它,所以它'即时)并使用该模型作为可查询的数据结构来访问权重。
对于顺序模型,您可以这样做:
weights = model.layers[5].get_weights()
model.layers[5].set_weights(weights)
另请参阅:another discussion关于此主题的fchollet。