Tf2 ValueError: A merge layer should be called on a list of inputs

Tf2 ValueError: A merge layer should be called on a list of inputs

问题描述

最近遇到了一个tensorflow的问题,在load已经save下来的模型的时候,发生了报错:

/opt/conda/lib/python3.6/site-packages/tensorflow/python/keras/engine/base_layer.py in _infer_output_signature(self, inputs, args, kwargs, input_masks)
    878           self._maybe_build(inputs)
    879           inputs = self._maybe_cast_inputs(inputs)
--> 880           outputs = call_fn(inputs, *args, **kwargs)
    881 
    882         self._handle_activity_regularization(inputs, outputs)

/opt/conda/lib/python3.6/site-packages/tensorflow/python/keras/layers/merge.py in call(self, inputs)
    116   def call(self, inputs):
    117     if not isinstance(inputs, (list, tuple)):
--> 118       raise ValueError('A merge layer should be called on a list of inputs.')
    119     if self._reshape_required:
    120       reshaped_inputs = []

ValueError: A merge layer should be called on a list of inputs.

这个问题以前遇到过,这次又遇到的时候忘了怎么解决的,这次进行一下记录。

我先搜了下资料,如果有这个类似问题的话,并且不是我遇到的这种出错方式,可以跳转至 参考 部分看看其他的解决方案。

解决

tensorflow2 有两种方式进行save模型,一种是通过pb的形式进行save,这种方式可以保持模型结构的name以及相应的结构。

比如以下方式:

 train_model.save('{}/ckpt'.format(output_path))

另外一种是通过json config的形式进行save模型,这里只会保存模型的结构,所以使用这种模型save的checkpoint需要结构一致。

  train_model.save_weights('{}/ckpt'.format(output_path), save_format='tf')

对代码进行排查发现,模型预期应该使用pb的checkpoint进行restore,但是由于部分公共代码改动导致使用了json config的checkpoint进行restore,导致出现这个问题。

参考

python - tf.keras.models.load_model return ValueError: A merge layer should be called on a list of inputs - Stack Overflow

python 3.x - ValueError: A merge layer should be called on a list of inputs. Tensorflow Keras - Stack Overflow

python - Keras ValueError: A merge layer should be called on a list of inputs - Stack Overflow

python - tf.keras.models.load_model return ValueError: A merge layer should be called on a list of inputs - Stack Overflow

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值