我想使用 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: []
如果您的
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()