在 Keras 中展开中间功能层

问题描述 投票:0回答:1

我想使用 AblationCAM 方法,使用 Keras。我想使用 AblationCAM 方法,该方法需要使用原始模型的输入和所选层的输出创建一个新模型。但是,我的模型中选定的层位于功能 API 层内。有没有办法在保持层与层之间的连接的同时打开中间功能 API 层?或者一种访问功能 API 层内的输出层的方法?

当我尝试创建新模型时,遇到错误,指出图表已断开连接。

输入:

from tensorflow.keras.models import Model
new_model = Model(inputs=model.input,outputs=model.get_layer(FUNCTIONAL_LAYER).get_layer('conv2_block1_0_bn').output)

输出:

ValueError: Graph disconnected: cannot obtain value for tensor KerasTensor(type_spec=TensorSpec(shape=(None, 224, 224, 3), dtype=tf.float32, name='input_6'), name='input_6', description="created by layer 'input_6'") at layer "zero_padding2d". The following previous layers were accessed without issue: []
python tensorflow keras deep-learning
1个回答
0
投票

如果您的

FUNCTIONAL_LAYER
嵌套在另一个层或块中,则必须从该块中提取特定的输出层以创建新模型。

这样我们就可以提取出中间层了:

conv2_block1_0_bn_layer = model.get_layer('conv2_block1_0_bn')
FUNCTIONAL_LAYER = conv2_block1_0_bn_layer.output  
new_model = Model(inputs=model.input, outputs=FUNCTIONAL_LAYER) 
new_model.summary()
© www.soinside.com 2019 - 2024. All rights reserved.