Keras - 获取与该层相连的层

5

我有一个使用Keras构建的模型,可以是顺序的或者是函数式的。这个模型可以通过model变量进行访问。我想要实现一种方法,它能够从输出层向输入层遍历整个模型,并对模型的权重进行操作。

有没有办法获取某个特定层的前驱层?我想要像这样做:

x = <some number>
layer_x = model.layers[x] 
predecessor_layers = ???
1个回答

5
@Mitiku提出的解决方案只返回输入张量,但我们需要前继层。可以通过以下方式找到前继层:
x = <some number>
layer_x = model.layers[x] 
int_node = layer_x._inbound_nodes[0]
predecessor_layers = int_node.inbound_layers[0]

在这个解决方案中,我们假设layer_x只有一个前置层。为了获取该层,我们首先访问连接这两个层的节点:int_node,然后获取其输入上的层:int_node.inbound_layers[0]
注意:这个解决方案不太好,因为它访问了受保护的属性,但它是可行的。

@rob 谢谢你的更新。我已经编辑了我的答案。 - Primoz
很抱歉,我之前说错了 _inbound_nodes 已经被更改了(除非你使用 model.get_config())。例如,你可以调用 model.get_config()['layers'][0]['inbound_nodes']model.layers[0]._inbound_nodes 来获取输入节点。我会删除之前的评论。 - rob
1
_inbound_nodes 中有一个拼写错误(您忘记了 _)。由于字符数少于6个,我无法进行编辑。 - Zaccharie Ramzi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接