我有一个基于Keras的模型,可以是顺序的或功能性的。可以通过model
变量访问模型。我想实现从输出到输入遍历模型的方法,并使用模型的权重执行某些操作。
有没有办法获得特定图层的前一层?我想做这样的事情:
x = <some number>
layer_x = model.layers[x]
predecessor_layers = ???
答案 0 :(得分:1)
@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]
。
注意:此解决方案不好,因为它可以访问受保护的属性,但它可以正常工作。
答案 1 :(得分:0)
keras中的图层有两个属性,指向它的输入图层和输出图层。在您的情况下,前导层是输入层,您可以通过调用输入属性来访问它。
x = <some number>
layer_x = model.layers[x]
predecessor_layers = layer_x.input