使用K.function

时间:2019-10-31 10:32:17

标签: python tensorflow keras

在这篇文章之后,我正在尝试为我的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)吗?如果是这样,我该怎么办才能得到第一个错误?

提前谢谢!

0 个答案:

没有答案