在这篇文章之后,我正在尝试为我的resnet50体系结构实现类激活图:https://vincentblog.xyz/posts/class-activation-maps
我必须替换以下代码行:
get_output = tf.keras.backend.function([model.layers[0].input],
[final_conv_layer.output, model.layers[-1].output])
通过这个:
ins = model.layers[0].get_input_at(-1)
outs = final_conv_layer.get_output_at(-1), model.layers[-1].get_output_at(-1)
print("is instance", isinstance([ins], (list, tuple)))
get_output = K.function(inputs=[ins], outputs=outs)
因为我在输入和输出时都遇到了这个错误:
图层resnet50具有多个入站节点,因此“图层输入”的概念定义不明确。请改用
get_input_at(node_index)
。
但是现在当我使用get_output
函数时,出现以下错误:
2894 def _call(self, inputs):
2895 if not isinstance(inputs, (list, tuple)):
-> 2896 raise TypeError('`inputs` should be a list or tuple.')
2897
2898 session = get_session()
TypeError: `inputs` should be a list or tuple.
即使print(isinstance([ins], (list, tuple)))
输出True
为什么会出现此错误?是因为我不得不用input
代替get_input_at(-1)
吗?如果是这样,我该怎么办才能得到第一个错误?
提前谢谢!